Исключение при компиляции: неправильная версия 50.0, должна быть 49.0
Я работаю над приложением с JXL API, и когда я пытался скомпилировать с использованием eclipse IDE, он работает нормально, и то же самое не компилируется, когда я пытаюсь скомпилировать в командной строке и отображаю приведенное ниже исключение.
Extract.java:6: cannot access jxl.read.biff.BiffException bad class file: C:\Program Files\Java\jdk1.5.0_01\jre\lib\ext\jxl.jar(jxl/read/biff/BiffException.class)
class file has wrong version 50.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpa
th.
import jxl.read.biff.BiffException;
^
1 error
EDIT:
Я могу выполнить с использованием JDK 1.6. Поскольку JDK 1.6 также должен быть совместим с более низкими версиями, почему он не поддерживает файлы классов, которые были скомпилированы в JDK 1.5.
Ответы
Ответ 1
Библиотека, которую вы используете, была скомпилирована с помощью Java 6
Ваш компилятор - это Java 5, поэтому он не понимает этот формат.
Чтобы исправить это, вам нужно получить версию версии 1.5 или обновить свой компилятор до версии 1.6. Я предлагаю более позднюю версию.
Ответ 2
Per http://www.jnode.org/node/2140...
Представлено Стивеном Кроули в пятницу, 30.11.2007 - 07:15.
Я подозреваю, что вы смешиваете код, скомпилированный с разными версиями Java. Class file version 50.0 используется Java 6.0, а 49.0 используется Java 5.0.
Попробуйте сделать "build clean", чтобы избавиться от всех существующих файлов классов, за которым следует регулярная сборка.
JNode разрабатывается только с использованием Java 6.0. В прошлый раз, когда я пытался, он не строился с использованием Java 5.0 (aka 1.5). (Это проблема с программой, которая создает загрузочный образ JNode.)
Попробуйте изменить конструктор в Eclipse. Если вы используете 3.4, это Project - Properties - Java Compiler - Включить специальные настройки проекта - Уровень соответствия компилятора = 1.6. Вам также потребуется установить JRE 1.6.
Ответ 3
Проверьте путь к классу в eclipse и убедитесь, что его один и тот же путь к классу, который вы компилируете в командной строке, также проверьте импорт вашей библиотеки
Ответ 4
Это означает, что вы скомпилировали этот класс с Java 6 и попытались выполнить с Java 5.
Решение:
Если вы используете ant, выполните нижеуказанные действия в корневом каталоге проекта
Если вы используете eclipse, просто
очистить рабочее пространство (удалить файлы классов, которые были скомпилированы с помощью Java6)
и снова построить
Ответ 5
это может быть то, что в IDE вы указываете на последнюю версию JDK, но когда вы создаете свою программу за пределами IDE (возможно, с maven), ваша java_home является более старой версией, чем в вашей IDE.