Исключение при компиляции: неправильная версия 50.0, должна быть 49.0

Я работаю с приложением с JXL API, и когда я попытался скомпилировать с помощью Eclipse IDE, он работает нормально, и то же самое не компилируется, когда я пытаюсь скомпилировать в командной строке и показывая приведенное ниже исключение..

Extract.java:6: cannot access jxl.read.biff.BiffException bad class file: C:Program FilesJavajdk1.5.0_01jrelibextjxl.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

изменить:

Я могу выполнить с помощью JDK 1.6. Поскольку JDK 1.6 также должен быть совместим с более низкими версиями, почему он не поддерживает файлы классов, которые были скомпилированы в JDK 1.5.

5 ответов


библиотека, которую вы используете, была скомпилирована с Java 6

ваш компилятор Java 5, поэтому он не понимает этот формат.

чтобы исправить это, вы должны получить версию 1.5 библиотеки или обновить компилятор до 1.6 я предлагаю позже.


Per http://www.jnode.org/node/2140...

представлено Стивеном Кроули Пт, 11/30/2007-07: 15.

Я подозреваю, что вы смешиваете код, скомпилированный с различными версиями Java. Файл класса версии 50.0 используется Java 6.0, и 49.0 используется Java 5.0.

попробуйте сделать "чистую сборку", чтобы избавиться от всех существующих файлов классов, а затем обычную сборку.

JNode разрабатывается только с использованием Java 6.0. Последний время, когда я пытался, он не строился с использованием Java 5.0 (он же 1.5). (Это проблема с программой, которая строит загрузочный образ JNode.)

попробуйте изменить конструктор в Eclipse. Если вы используете 3.4, это Проект-Свойства-Компилятор Java-Включить Конкретные Параметры Проекта - Уровень Соответствия Компилятора = 1.6. Вам также потребуется установить JRE 1.6.


Проверьте путь к классу в eclipse и убедитесь, что его тот же путь к классу вашей компиляции в командной строке, а также проверьте импорт библиотеки


Это означает, что вы скомпилировали этот класс с Java 6 и пытаетесь выполнить с Java 5.

устранение :

Если вы используете ant выполните следующие действия в корневом каталоге проекта

  1. очистить АНТ
  2. развернуть АНТ

Если вы используете eclipse, просто очистите рабочую область (удалите файлы классов, которые были скомпилированы с помощью Java6) и построить снова


Это может быть то, что в вашей IDE вы указываете на последнюю версию JDK, но когда вы строите свою программу вне IDE(возможно, с maven), ваш java_home является более старой версией для вашей IDE.