Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does 'Unsupported major.minor version 52.0' mean, and how do I fix it? [duplicate]

Ok so I loosely understand that 52.0 is Java 8, and that the exceptions means that some code is compiled with one version of java, and some with another. What I can't get my head around is which way around it is.

Here's the stack trace that I get:

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) 

I'm executing my code from eclipse and it crashes before reaching main. I've followed a few posts on here saying to change my compliance level/my JRE, but I can't seem to get it to fix.

Is the error saying that the class 'ValueFactory' has been compiled with java 8, or that my code has? I've tried changing my compliance level to 1.6, 1.7, and 1.8, but neither of these fixed the issue.

like image 580
Andy Avatar asked Jun 03 '16 10:06

Andy


People also ask

When my class encounters unsupported class version error which option could resolve this issue?

1) If you encounter UnSupportedClassVersionError, check the JRE version you are using to run program and switch to higher version for quick solution.

How do I fix Java Lang UnsupportedClassVersionError error?

UnsupportedClassVersionError happens because of a higher JDK during compile time and lower JDK during runtime. How can i make above change? Project -> Properties -> Java Compiler Enable project specific settings. Then select Compiler Compliance Level to 1.7, 1.6 or 1.5, build and test your app.


1 Answers

You don't need to change the compliance level here, or rather, you should but that's not the issue.

The code compliance ensures your code is compatible with a given Java version.

For instance, if you have a code compliance targeting Java 6, you can't use Java 7's or 8's new syntax features (e.g. the diamond, the lambdas, etc. etc.).

The actual issue here is that you are trying to compile something in a Java version that seems different from the project dependencies in the classpath.

Instead, you should check the JDK/JRE you're using to build.

In Eclipse, open the project properties and check the selected JRE in the Java build path.

If you're using custom Ant (etc.) scripts, you also want to take a look there, in case the above is not sufficient per se.

like image 95
Mena Avatar answered Oct 07 '22 18:10

Mena