Как проверить версию jdk, используемую для компиляции файла .class
Возможный дубликат:
Инструмент для чтения и отображения версий Java.class
Я пытаюсь отлаживать
"Недопустимый номер версии в .class файле
ошибка в java, есть ли способ проверить, в какой версии находятся файлы .class
?
Я использую JRE1.5.0_6
, но мой JDK
- версия 1.6.0_13.
Я компилирую с режимом совместимости, установленным равным 1,5 в eclipse, который, как я думал, будет работать...
Ответы
Ответ 1
Вы ищете это в командной строке (для класса MyClass):
В Unix/Linux:
javap -verbose MyClass | grep "major"
В Windows:
javap -verbose MyClass | findstr "major"
Вы хотите получить основную версию из результатов. Вот несколько примеров:
- Java 1.2 использует основную версию 46
- Java 1.3 использует основную версию 47
- Java 1.4 использует основную версию 48
- Java 5 использует основную версию 49
- Java 6 использует основную версию 50
- Java 7 использует основную версию 51
- Java 8 использует основную версию 52
- Java 9 использует основную версию 53
- Java 10 использует основную версию 54
Ответ 2
Btw, причина, по которой у вас возникают проблемы, заключается в том, что java-компилятор распознает два флажка версии. Существует -source 1.5, который предполагает исходный код java 1.5 уровня и -target 1.5, который будет отображать файлы классов, совместимые с Java 1.5. Вы, вероятно, захотите использовать оба этих переключателя, но вам определенно нужно -target 1.5; попробуйте дважды проверить, что затмение делает правильные вещи.
Ответ 3
Бесплатный инструмент JarCheck здесь
Ответ 4
Вы можете попробовать jclasslib:
https://github.com/ingokegel/jclasslib
Хорошо, что он может ассоциироваться с расширением *.class.
Ответ 5
Предоставляет ли флаг -verbose
вашей команде java
полезную информацию? Если нет, возможно, java -X
показывает что-то конкретное для вашей версии, которое могло бы помочь?