2017-10-19 4 views
0

Ich versuche, ein Applet in eine reguläre Java-Anwendung zu konvertieren, mit JNLP zum Ausführen. Wenn es direkt läuft, funktioniert es. Aber wenn ich über JNLP laufe, bekomme ich den Stack-Trace darunter.JNLP kann keine Hauptklasse mit Maven finden

at com.sun.javaws.LaunchDownload.getMainClassName(Unknown Source) 
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
    at com.sun.javaws.Launcher.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 


Haupt Java-Klasse (App.java)

public static void main(String[] args) throws Exception { 
    String porta = args[0]; 
    String dados = args[1]; 
    String etiquetaBytes = args[2]; 
    DadosEtiqueta[] dadosEtiqueta = getJsonFormString(dados, DadosEtiqueta[].class); 
    ... 
} 


JNLP-Datei (config.jnlp) Dies ist, wo das Glas Ausführung konfiguriert ist

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="http://172.16.3.5:8080/vendor" href="jnlp/config.jnlp"> 
    <information> 
     <title>App Title</title> 
     <vendor>Vendor Name</vendor> 
     <offline-allowed/> 
    </information> 
    <resources> 
     <j2se version="1.7+"/> 
     <jar href="dir1/dir2/dir3/app-title.jar" main="true" /> 
    </resources> 
    <application-desc/> 
</jnlp> 

Maven Jar Plugin (pom.xml) Dieses Plugin setzt die Hauptklasse.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifest> 
       <mainClass>myPackage.App</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 
+0

Nach dem Kompilieren im Ordner '/target', Was ist der Inhalt der resultierenden Manifestdatei? – Jaime

+0

Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: franco.pan Erstellt-By: Apache Maven 3.3.9 Errichten-Jdk: 1.8.0_144 Main-Klasse: myPackage.App –

+0

Was ist die Exception (nicht nur die ersten Zeilen des Stacktrace), die du bekommen hast? - Befindet sich das Glas in "http: //172.16.3.5: 8080/vendor/dir1/dir2/dir3/app-title.jar"? – Jaime

Antwort

2

Ich denke, Sie JNLP ist nicht gültig.

(siehe https://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/jnlpFileSyntax.html):

Anmerkung: A JNLP Datei eine der folgenden Angaben enthalten: applikations DESC, applet-desc, bauteil desc oder installations DESC.

Und für application-desc sollte main-class erforderlich sein.

Versuchen

<application-desc main-class="myPackage.App" /> 

Es könnte erforderlich sein hinzufügen zu hinzufügen name, width, height aber die Beschreibung ist nicht sehr genau, dass auf.

+0

* "Es könnte notwendig sein,' name', 'width',' height' hinzuzufügen, aber die Beschreibung ist nicht sehr genau darauf. "* Diese sind nur relevant für' applet-desc' (für Applets). OP: Vergewissern Sie sich, dass Sie den JNLP mit JaNeLA überprüfen, das Sie unter [share drive] (https://drive.google.com/drive/#folders/0B5B9wDXIGw9lUnJaUjA2cmlVRE0) finden. –

+0

lch lese das auch. Aber das Beispiel gibt diese Parameter auch für Anwendungsdesk an, wo die Spezifikation dies nicht tut. – asbachb

+0

Ich habe eine beträchtliche Erfahrung mit Applets, und für sie sind die drei Parameter sinnvoll. Z.B. width und height sind (oder waren zumindest) häufiger für Applets, da ihre Größe durch den HTML-Code festgelegt wurde, in den sie eingebettet waren. OTOH für eine Desktop-App. Die Größe wird entweder durch 'pack()' (minimale Größe, die für die Komponenten in der GUI benötigt wird) oder 'setSize (..)' gesetzt.Der Parameter 'name' ist auch für Applets geeignet, da er eine Möglichkeit darstellt, eines von mehreren Applets in einem Applet-Kontext (Applets, die möglicherweise in dieselbe Webseite eingebettet sind) zu identifizieren. Es ermöglichte unter anderem die Inter-Applet-Kommunikation. –

Verwandte Themen