java.lang.UnsupportedClassVersionError: com/crawljax/cli/JarRunner: неподдерживаемая версия major.minor 51.0

Я скачал программу:

wget https://github.com/crawljax/crawljax/releases/download/crawljax-3.6/crawljax-cli-3.6.zip

Распакуйте его:

unzip crawljax-cli-3.6.zip

получить в папке и запустить:

java -jar crawljax-cli-3.6.jar

Это ошибка, которую я получаю:

java -jar crawljax-cli-3.6.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/crawljax/cli/JarRunner : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: com.crawljax.cli.JarRunner. Program will exit.

Я сделал это:

apt-get install default-jre
apt-get install default-jdk

Но это та же ошибка

Моя версия Java:

javac -version

Javac 1.6.0_35

java -version

Java-версия "1.6.0_35" Среда выполнения OpenJDK (IcedTea6 1.13.7) (6b35-1.13.7-1~deb7u1) Виртуальная 64-разрядная серверная виртуальная машина OpenJDK (сборка 23.25-b01, смешанный режим)

Я прочитал это потому, что я скомпилировал версию с более высокой версией, чем та, которая выполняется на JVM, но у меня нет исходного кода для перекомпиляции, у меня просто есть.jar.

3 ответа

Решение

Как вы заметили, вы пытаетесь запустить JAR, скомпилированный для Java 7 с JRE 6. Просто установите JRE из Java 7:

apt-get install openjdk-7-jre 
apt-get install openjdk-7-jdk # just for good measures

И установите его в качестве JRE по умолчанию:

update-alternatives --config java # and select Java 7

Вам нужно запустить этот код с Java 7, так как это то, с чем он компилируется.

Когда вы откроете github: https://github.com/crawljax/crawljax/blob/master/pom.xml вы увидите, что в pom он скомпилирован в Java 1.7, и вы пытаетесь запустить его в более низкой версии. Ниже приведена таблица ошибок такого рода:

Показанный номер версии описывает версию JRE, с которой совместим файл класса. Сообщаемые основные цифры:

J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

Либо вы можете запустить его в более поздней версии, либо изменить свойства pom до 1.6 и собрать его. но лучше запустить его в версии 1.7+.

Другие вопросы по тегам