Domanda

ottengo un UnsupportedClassVersionError generata quando il lancio jnlp, tuttavia quando provo a fare funzionare i file jar rilevanti da linea di comando tutto funziona bene. Ho provato a installare le versioni J2SE a 1.5+, 1.6+, utilizzando sottoscritto / file jar non firmati, ma tutto questo non aiuta.

Sto cercando di lanciare il mio file jar con due file jar di supporto (mysql-connector.jar e swingx.jar). Il mio file jar è stato compilato con 1.6 le impostazioni di conformità in Eclipse e costruito in un barattolo con ant. Dal momento che posso lanciare i 3 vasetti da linea di comando utilizzando Java 1.6 Sono un po 'sconcertato che jnlp fallisce. Ogni aiuto è apprezzato.

Ecco il file JNLP:

<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File -->
<jnlp spec="1.5+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">
 <information>
  <title>demo: daily stock charting utility</title>
  <offline-allowed/>
 </information>
 <security>
 </security>
 <resources>
  <j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+" />
  <jar href="demo-daily.jar" main="true" />
  <jar href="swingx.jar" main="false" />
  <jar href="mysql-connector.jar" main="false" />
 </resources>
 <application-desc main-class="quipu.viewers.charts.stockcharts.daily"/>
</jnlp>

L'errore che ottengo è:

java.lang.UnsupportedClassVersionError: numero di versione Bad nel file .class a java.lang.ClassLoader.defineClass1 (metodo natale) a java.lang.ClassLoader.defineClass (ClassLoader.java:675) a java.security.SecureClassLoader.defineClass (SecureClassLoader.java:124) a java.net.URLClassLoader.defineClass (URLClassLoader.java:260) a java.net.URLClassLoader.access $ 100 (URLClassLoader.java:56) a java.net.URLClassLoader $ 1.run (URLClassLoader.java:195) a java.security.AccessController.doPrivileged (metodo natale) a java.net.URLClassLoader.findClass (URLClassLoader.java:188) a com.sun.jnlp.JNLPClassLoader.findClass (JNLPClassLoader.java:256) a java.lang.ClassLoader.loadClass (ClassLoader.java:316) a java.lang.ClassLoader.loadClass (ClassLoader.java:251) a com.sun.javaws.Launcher.doLaunchApp (Launcher.java:1052) a com.sun.javaws.Launcher.run (Launcher.java:105) a java.lang.Thread.run (Thread.java:613)

È stato utile?

Soluzione

In primo luogo, aprire una finestra CMD o una finestra di shell (a seconda del sistema operativo che si sta utilizzando) e digitare questo:

java -version

per assicurarsi che la versione si sta eseguendo è la versione che ci si aspetta di essere in esecuzione. Poi, ancora una volta dalla riga di comando, eseguire il comando:

javaws http://host/path/to/your.jnlp

Se non è possibile eseguire javaws dalla riga di comando, allora dovrete scoprire dove è installato e utilizzare il percorso completo del file eseguibile. In Windows, questo sarà qualcosa di simile

C:\Program Files\Java\jre1.6.0_14\bin\javaws.exe

e sotto Linux può essere /usr/bin/javaws o può essere in un'altra directory.

Lo so in ambiente Windows, in ogni caso, quando si esegue qualsiasi applicazione Java Web Start, il caricatore JNLP viene utilizzato dalla più recente versione di Java installata. O almeno si suppone di fare questo. Non ho sperimentato sotto Linux (o MacOS) per vedere come funziona lì. Ma è sempre possibile che qualcosa ha ottenuto incasinato e quando si lancia un JNLP si sta accidentalmente in esecuzione un Java 1.5 JNLP launcher.

Si può sempre provare a disinstallare e reinstallare la versione più recente di Java per garantire che la versione più recente versione è installata correttamente. Questo può sistemare le cose. Si consiglia inoltre di controllare il vostro $ PATH (o% PATH%) per assicurarsi che la versione corretta di Java è sul percorso. (Questo non è sempre necessario ... ma se qualsiasi versione di Java è sulla strada, assicurarsi che la versione che si desidera.) Controllare la variabile d'ambiente JAVA_HOME per assicurarsi che punti in cui si pensa di sì.

Altri suggerimenti

Solo una supposizione, ma aggiornare il tag di apertura di spec di riferimento = "1.6 +"

<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top