Pregunta

Me aparece un UnsupportedClassVersionError inicia cuando se produce el lanzamiento de jnlp, sin embargo, cuando trato de ejecutar los archivos JAR pertinentes desde la línea de comandos todo funciona bien. He intentado establecer versiones J2SE 1.5 + a, 1.6+, utilizando firmado / archivos JAR sin firmar, pero todo lo que no ayuda.

Estoy tratando de poner en marcha mi propio archivo jar con dos archivos jar de apoyo (mysql-connector.jar y swingx.jar). Mi archivo jar ha sido compilado con 1,6 ajustes de cumplimiento en Eclipse y construido en un frasco con la hormiga. Desde que puedo lanzar los 3 frascos de línea de comandos usando Java 1.6 que estoy un poco desconcertado que jnlp falla. Cualquier ayuda es apreciada.

Aquí está el archivo 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>

El error que consigo es:

java.lang.UnsupportedClassVersionError: número de versión de Bad en el archivo .class en java.lang.ClassLoader.defineClass1 (Nativo Método) en java.lang.ClassLoader.defineClass (ClassLoader.java:675) en java.security.SecureClassLoader.defineClass (SecureClassLoader.java:124) en java.net.URLClassLoader.defineClass (URLClassLoader.java:260) en java.net.URLClassLoader.access $ 100 (URLClassLoader.java:56) en java.net.URLClassLoader $ 1.run (URLClassLoader.java:195) en java.security.AccessController.doPrivileged (Nativo Método) en java.net.URLClassLoader.findClass (URLClassLoader.java:188) en com.sun.jnlp.JNLPClassLoader.findClass (JNLPClassLoader.java:256) en java.lang.ClassLoader.loadClass (ClassLoader.java:316) en java.lang.ClassLoader.loadClass (ClassLoader.java:251) en com.sun.javaws.Launcher.doLaunchApp (Launcher.java:1052) en com.sun.javaws.Launcher.run (Launcher.java:105) en java.lang.Thread.run (Thread.java:613)

¿Fue útil?

Solución

En primer lugar, abrir una ventana de CMD o una ventana de shell (según sea apropiado para el sistema operativo que está usando) y escriba lo siguiente:

java -version

para asegurarse de que la versión que se está ejecutando es la versión que espera estar funcionando. Entonces, de nuevo desde la línea de comandos, ejecute el comando:

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

Si no puede ejecutar javaws desde la línea de comandos, a continuación, tendrá que averiguar donde está instalado y utilizar la ruta completa al ejecutable. En Windows, esto va a ser algo así como

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

y bajo Linux puede ser /usr/bin/javaws o puede ser en otro directorio.

Sé que en Windows, en todo caso, cuando se ejecuta cualquier aplicación Java Web Start, el cargador JNLP se utiliza desde la más reciente versión de Java instalada. O al menos se supone que debe hacerlo. No he experimentado en Linux (o MacOS) para ver cómo se trabaja allí. Pero siempre es posible que algo se ha hecho mal estado y cuando se lanza un JNLP está ejecutando accidentalmente a un lanzador de Java 1.5 JNLP.

Siempre se puede tratar de desinstalar y volver a instalar la versión más reciente de Java para asegurarse de que la última y mejor versión se ha instalado correctamente. Esto puede arreglar las cosas. También es posible que desee comprobar su $ PATH (o% PATH%) para asegurarse de que la versión correcta de Java está en el camino. (Esto no siempre es necesario ... pero si cualquier versión de Java se encuentra en el camino, asegúrese de que es la versión que desea.) Compruebe la variable de entorno JAVA_HOME para asegurarse de que los puntos donde se piensa que lo hace.

Otros consejos

Sólo una conjetura, pero actualizar la etiqueta de apertura a las especificaciones de referencia = "1.6 +"

<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top