Вопрос

При запуске jnlp я получаю сообщение UnsupportedClassVersionError, однако, когда я пытаюсь запустить соответствующие файлы jar из командной строки, все работает нормально.Я попытался установить версии j2se на 1.5 +, 1.6 +, используя подписанные / неподписанные jar-файлы, но все это не помогло.

Я пытаюсь запустить свой собственный файл jar с двумя поддерживающими файлами jar (mysql-connector.jar и swingx.jar).Мой файл jar был скомпилирован с настройками соответствия 1.6 в Eclipse и встроен в jar с помощью ant.Поскольку я могу запустить 3 jar из командной строки, используя java 1.6, я немного сбит с толку тем, что jnlp терпит неудачу.Любая помощь приветствуется.

Вот файл 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>

Ошибка, которую я получаю, это:

java.язык.Неподдерживаемый classversionerror:Неверный номер версии в файле .class на java.lang.ClassLoader.defineClass1 (собственный метод) на java.lang.ClassLoader.defineClass(ClassLoader.java:675) в java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) в java.net.URLClassLoader.defineClass(URLClassLoader.java:260) стоимость java.net.URLClassLoader.access составляет 100 долларов(URLClassLoader.java:56). в java.net.URLClassLoader$1.выполнить(URLClassLoader.java:195) в java.security.AccessController.Допривилегирован (собственный метод) в java.net.URLClassLoader.FindClass(URLClassLoader.java:188) в com.sun.jnlp.jnlclassloader.FindClass(jnlclassloader.java:256) в java.lang.ClassLoader.loadClass(ClassLoader.java: 316) на java.lang.ClassLoader.loadClass(ClassLoader.java:251) на com.sun.javaws.Пусковая установка.doLaunchApp(Лаунчер.java:1052) в com.sun.javaws.Launcher.run(Launcher.java:105) на java.lang.Thread.run(Thread.java:613)

Это было полезно?

Решение

Сначала откройте окно CMD или командной строки (в зависимости от используемой вами операционной системы) и введите это:

java -version

чтобы убедиться, что версия, которую вы используете, является той версией, которую вы ожидаете запустить.Затем, снова из командной строки, выполните команду:

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

Если вы не можете бежать javaws затем из командной строки вам нужно будет узнать, где он установлен, и использовать полный путь к исполняемому файлу.Под Windows это будет что-то вроде

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

и под Linux это может быть /usr/bin/javaws или это может быть в другом каталоге.

Во всяком случае, я знаю, что под Windows, когда вы запускаете любое приложение Java Web Start, используется загрузчик JNLP из самой последней установленной версии Java.Или, по крайней мере, предполагается, что он должен это делать.Я не экспериментировал под Linux (или macOS), чтобы посмотреть, как это там работает.Но всегда возможно, что что-то пошло не так, и когда вы запускаете JNLP, вы случайно запускаете Java 1.5 JNLP launcher.

Вы всегда можете попробовать удалить и переустановить самую последнюю версию Java, чтобы убедиться, что последняя и самая лучшая версия установлена правильно.Это может все исправить.Вы также можете захотеть проверить свой $PATH (или %PATH%), чтобы убедиться, что в пути указана правильная версия Java.(Это не всегда необходимо ...но если какая-либо версия Java находится на пути, убедитесь, что это та версия, которую вы хотите.) Проверьте переменную окружения JAVA_HOME, чтобы убедиться, что она указывает туда, куда вы думаете.

Другие советы

Просто предположение, но обновите открывающий тег до reference spec="1.6+".

<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top