Исключение Tinyos в потоке "main" java.lang.UnsupportedClassVersionError: Неверный номер версии в файле .class - PullRequest
1 голос
/ 26 мая 2009

Когда я использую команду make, например make mica2, в TinyOS. Возникнет следующая проблема:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
make: *** [exe0] Error 1

Я переустановил JAVA и добавил переменные env, но это не сработало. Я использую TinyOS 2.1 и JAVA 1.5 u18. Может кто-нибудь мне помочь?

Проблема решена установкой JDK 1.6. Хотя, когда я запускаю команду tos-check-env, она показывает предупреждение, которое говорит мне, что это не JDK 1.4 или 1.5. Может быть, это ошибка в TinyOS.

Ответы [ 5 ]

4 голосов
/ 26 мая 2009

UnsupportedClassVersionError означает, что вы пытаетесь запустить байт-код в более старой версии JVM, чем она была скомпилирована. Вы можете использовать средство просмотра файлов классов, чтобы проверить, какая версия JDK был скомпилирован исходным кодом, и убедиться, что совместим с JAVA 1.5 u18.

2 голосов
/ 26 мая 2009

Получаемая ошибка означает, что работающая версия Java пытается загрузить класс, скомпилированный с несовместимой версией Java.

С предоставленной вами информацией невозможно диагностировать проблему более конкретно, чем эта - посмотрите какие библиотеки Java вы используете и каковы их требуемые версии Java. Если вы не можете найти здесь что-то неправильное, вам может потребоваться очистить некоторые кэшированные файлы * .class, которые были созданы с помощью версии Java, перед переустановкой.

Наконец, если у вас установлено несколько JVM, убедитесь, что make использует тот, который вы ожидаете. Вы определенно можете установить Java 1.5u18, но приложение все еще будет находить и использовать 1.4 JVM откуда-то.

1 голос
/ 27 июня 2010

Сегодня я получил ту же ошибку, и я просто решил ее, установив Java версии 1.6 и jre6, и сделав версию Java 1.6 в качестве версии по умолчанию.

У меня также была установлена ​​Java 1.5 ранее, так как tos-check-env хотел, чтобы у меня была установлена ​​либо версия java 1.4, либо java 1.5.

Я также включил обе версии java 1.5 и 1.6 в мой classpath и снова запустил make micaz в каталоге /opt/tinyos-2.1.0/apps/Blink, и это сработало.

0 голосов
/ 23 июля 2012

Используйте sudo update-alternatives --config java и установите версию, которую вы можете использовать.

0 голосов
/ 26 мая 2009

Обычно это сообщение типа

.
(Unsupported major.minor version 49.0)

в первой строке сообщения об исключении. Тем не менее, вы получили

Bad version number in .class file

Так, может быть, ваш файл класса поврежден?

...