java.lang.UnsupportedClassVersionError: com/crawljax/cli/JarRunner : Unsupported major.minor version 51.0

java.lang.UnsupportedClassVersionError: com/crawljax/cli/JarRunner : Unsupported major.minor version 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[=13=]0(URLClassLoader.java:73)
at java.net.URLClassLoader.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) OpenJDK 64 位服务器 VM(内部版本 23.25-b01,混合模式)

我看到这个是因为我编译的版本比在JVM上执行的版本高,但是我这里没有源代码可以重新编译,我只有.jar。

您需要 运行 此代码使用 Java 7,因为它是用它编译的。

如您所述,您正在尝试 运行 使用 JRE 6 为 Java 7 编译的 JAR。只需从 Java 7:

安装 JRE
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

当您打开 github 时:https://github.com/crawljax/crawljax/blob/master/pom.xml 您应该能够在 pom 中看到它是在 Java 1.7 中编译的并且您正在尝试 运行 它在较低版本中.以下是此类错误的备忘单:

显示的版本号描述了 class 文件兼容的 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+ 版本中使用它是更好的主意。