Неподдерживаемая версия major.minor 52.0 с использованием ant
Я пытаюсь скомпилировать Android-приложение ics-openconnect ( https://github.com/cernekee/ics-openconnect).
Я следовал за этим "ReadMe". Но, когда я пытаюсь отладить, возникает ошибка.
ошибка:
-dex:
[dex] input: /home/yj/ics-openconnect/bin/classes
[dex] input: /home/yj/ics-openconnect/libs/openconnect-wrapper.jar
[dex] input: /home/yj/ics-openconnect/libs/acra-4.5.0.jar
[dex] input: /home/yj/ics-openconnect/libs/stoken-wrapper.jar
[dex] Pre-Dexing /home/yj/ics-openconnect/libs/openconnect-wrapper.jar -> openconnect-wrapper-58de756051305e9ad3753d649df24013.jar
[dx] Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor version 52.0
[dx] at java.lang.ClassLoader.defineClass1(Native Method)
[dx] at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
[dx] at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
[dx] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
[dx] at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
[dx] at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
[dx] at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
[dx] at java.security.AccessController.doPrivileged(Native Method)
[dx] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[dx] at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[dx] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[dx] at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[dx] Could not find the main class: com.android.dx.command.Main. Program will exit.
BUILD FAILED
и моя ява:
$java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
Javac:
$javac -version
javac 1.6.0_45
Я знаю, что версия 52.0 означает "jdk 1.8", но я установил только jdk 1.6
как я могу это исправить?
1 ответ
Ваш вопрос на самом деле содержит ответ. Каждый класс имеет поле версии, которое состоит из двух слов: номера версии Major и Minor. Версия следует за подписью Java "CAFEBABE". Для загрузки класса подпись должна быть правильной, а основная версия должна быть меньше или равна той, которая поддерживается активной JRE (Java Runtime Environment). Другими словами, если вы хотите загрузить классы, для которых слово Major Version установлено в 52, вы должны использовать Java 8 runtime. В противном случае вы получите исключение, показанное в вашем выводе. Таким образом, есть только два варианта: 1: установить среду выполнения Java 8. Или 2: Используйте только пакеты, созданные с использованием Java 6 SDK.