好的,所以我很明显地理解52.0是Java 8,并且例外意味着某些代码是用一个版本的Java编译的,有些是与另一个版本一起编译的。我无法转过头来的是四面八道。
这是我得到的堆栈跟踪:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/openrdf/model/ValueFactory : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
at java.lang.Class.getMethod0(Class.java:2856)
at java.lang.Class.getMethod(Class.java:1668)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
我正在从Eclipse执行我的代码,并且在到达Main之前崩溃了。我关注了这里的一些帖子,说要更改我的合规性/JRE,但我似乎无法修复它。
错误是说" ValueFactory"类已与Java 8编译,还是我的代码已编译?我已经尝试将合规级别更改为1.6、1.7和1.8,但是这些都没有解决问题。
答案
你没有需要要在此处更改合规性级别,或者更确切地说,这不是问题。
代码合规性确保您的代码与给定的Java版本兼容。
例如,如果您具有针对Java 6的代码合规性,则不能使用Java 7或8的新语法功能(例如钻石,Lambdas等)。
这里的实际问题是,您正在尝试编译 Java 版本中的某些内容,该版本似乎与类路径中的项目依赖项不同。
相反,您应该检查您要构建的JDK/JRE。
在Eclipse中,打开项目属性,并在Java构建路径中检查选定的JRE。
如果您使用的是自定义蚂蚁(等)脚本,那么您也想在那里看一下,以防上面的本身不够。