Pergunta

Eu recebo um UnsupportedClassVersionError jogado ao lançar jnlp, no entanto, quando tento executar os arquivos jar relevantes da linha de comando tudo bem funciona. Tentei configurar versões de J2SE a 1.5+, 1.6+, usando assinado / arquivos jar não assinados, mas tudo o que não ajuda.

Eu estou tentando lançar o meu próprio arquivo jar com dois arquivos jar de apoio (mysql-connector.jar e swingx.jar). Meu arquivo jar foi compilado com 1,6 configurações de conformidade em Eclipse e construído em um frasco com formiga. Desde que eu possa lançar os 3 frascos de linha de comando usando java 1.6 Estou um pouco perplexo que jnlp falhar. Qualquer ajuda é apreciada.

Aqui está o arquivo 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>

O erro que eu recebo é:

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

Foi útil?

Solução

Primeiro, abra uma janela CMD ou uma janela shell (conforme apropriado para o sistema operacional que você está usando) e digite o seguinte:

java -version

para garantir que a versão que você está executando é a versão que você espera para ser executado. Em seguida, novamente a partir da linha de comando, emita o comando:

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

Se você não pode executar javaws a partir da linha de comando, então você vai ter que descobrir onde ele está instalado e usar o caminho completo para o executável. No Windows, isso vai ser algo como

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

e sob Linux pode ser /usr/bin/javaws ou pode ser em outro diretório.

Eu sei que no Windows, de qualquer forma, quando você executar qualquer aplicativo Java Web Start, o carregador JNLP é usado a partir da mais recente versão do Java instalado. Ou pelo menos é suposto fazer isso. Eu não tenho experimentado no Linux (ou MacOS) para ver como ele trabalha lá. Mas é sempre possível que algo ficou confuso e quando você lançar um JNLP você está acidentalmente executando um Java 1.5 JNLP lançador.

Você sempre pode tentar desinstalar e re-instalar a versão mais recente do Java para garantir que a versão mais recente e maior está devidamente instalado. Isso pode consertar as coisas. Você também pode querer verificar o seu $ PATH (ou% PATH%) para garantir que a versão correta do Java está no caminho. (Isso nem sempre é necessário ... mas se qualquer versão do Java está no caminho, certifique-se de que é a versão que você quiser.) Verifique a variável de ambiente JAVA_HOME para se certificar de que ele aponta onde você acha que ele faz.

Outras dicas

Apenas um palpite, mas atualizar a tag de abertura para especificação de referência = "1.6 +"

<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top