I have been receiving errors when trying to run a Java program with my plugin that look like this:
Caused by: java.lang.UnsupportedClassVersionError: REALDrummer/myCoreLibrary : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_55]
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_55]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_55]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[?:1.7.0_55]
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[?:1.7.0_55]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[?:1.7.0_55]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[?:1.7.0_55]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_55]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[?:1.7.0_55]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:77) ~[spigot.jar:git-Spigot-1496]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:62) ~[spigot.jar:git-Spigot-1496]
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_55]
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_55]
at java.lang.Class.forName0(Native Method) ~[?:1.7.0_55]
at java.lang.Class.forName(Class.java:270) ~[?:1.7.0_55]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:40) ~[spigot.jar:git-Spigot-1496]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[spigot.jar:git-Spigot-1496]
... 6 more
From what I understand from other posts, this means that I'm compiling my plugin in Java 8 while running it on a JVM with Java 7. I know that I'm running a Java 7 JVM; I'm actually doing that on purpose to make sure that it's compatible with Java 7 for other people's use.
The problem is that I can't seem to get Eclipse to stop compiling in Java 8 and use Java 7. I have set the default JRE to Java 7 (OpenJDK Java 7) within the "Installed JREs" preference and I've noted that the Java 7 JRE is the one whose standard library now appears in the project. The Java 7 JRE is also the one that appears in the "Libraries" tab in the Java Build Path.
Despite all this, I'm still getting this error. Is there another setting I need to change to make Eclipse compile in Java 7 instead of Java 8? I don't have any Java 8 elements in my code.
Embarrassingly, I finally found the answer after I posted this question. There is in fact another setting.
Changing Project > Properties > Java Compiler > Compiler compliance level to "1.7" finally got it to compile with Java 7.
Related
in my school they asked me to make an application with JavaFXML, but I am having many problems with the IDE that I use, which is NetBeans Apache 12.2, because I have JDK 15 installed and it seems that since JDK 1.8 JavaFx does not come by default Anyway, I had to download JDK 1.7.8 so that it would allow me to make an application with JavaFX to do step by step as much as possible what my teacher does (If it were up to me, I would use any Java application and import the libraries) , but at the time of compiling the program it seems that it is compiling with JDK 15 or 1.8, I don't know, but the point is that I get an error for having compiled with a larger JDK. And I do not know how to configure NetBeans so that that does not happen, I hope you can guide me.
ant -f "C:\\Users\\home\\OneDrive\\Escritorio\\Laboratorio de ProgramaciĆ³n Orientada a Objetos\\JavaFXApplication2" jfxsa-run
jfxsa-run:
java.lang.UnsupportedClassVersionError: org/apache/tools/ant/launch/Launcher : 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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main"
Result: 1
BUILD SUCCESSFUL (total time: 1 second)
Version 52.0 means Java 1.8 and the error message means that you are compiling your java code with a Java 1.8 compiler but you are running it with a Java version that is less than 1.8. I guess, from your question, that you are running with 1.7.
I suggest that you remove all your JDK installations and simply install JDK 1.8. You can download it from here...
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
JDK 1.8 includes JavaFX.
If you prefer to use JDK 15, then you can download JavaFX 15 from here...
https://gluonhq.com/products/javafx/
The following link explains the java class file versions.
https://en.wikipedia.org/wiki/Java_class_file
I'm trying to follow the guide on the kafka website:
https://kafka.apache.org/quickstart
But when I use kafka_2.12-2.5.0 and try to start the zookeeper I get:
$ bin/zookeeper-server-start.sh config/zookeeper.properties
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/zookeeper/server/quorum/QuorumPeerMain : 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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
I'm using redhat7.1.
Tried to update java:
$ sudo yum install java-1.8.0-openjdk-devel
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
...
Package 1:java-1.8.0-openjdk-devel-1.8.0.31-2.b13.el7.x86_64 already installed and latest version
Nothing to do
What version of Java should I have?
This '52.0' means that it's compiled with 1.8 jdk, but you are triying to run mainly with lower one (or even very high incompatible?).
By default use the JAVA_HOME environment variable, so hope you already checked the basics: java_home, java --version... or even force an export of java_home just before running pointing a proper 32/64 java
I'm running a script that uses Eclipse and I am seeing this error:
Exception in thread "main" java.lang.UnsupportedClassVersionError: my/file/path/goes/here/CreateEcoreFile : 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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Some googling led me to believe that I was perhaps trying to compile a Java 7 project with a Java 8 compiler. I have checked my system (Cent OS 6) and I only have Java 7 installed, I even downgraded my Eclipse to Neon 1.A and it's build path is Java 7.
$ java -version
java version "1.7.0_51"
What else can I do?
As per this answer version 52.0 means Java 8. Eclipse uses it's own ECJ compiler which is part of the IDE, which probably uses Java 8 as default.
Follow this guide and set the Java compiler version for your project to Java 7:
Go to Window -> Preferences
Go to Java -> Compiler
Select Compiler compliance level
This question already has answers here:
How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version
(51 answers)
Closed 5 years ago.
I have a minecraft server running on a linux server i have at home, the server has been running fine in "snapshot 17w06a" for months without any issue. But now i want to update it to the "Minecraft 1.12-pre-release". I can easily set the server up locally on my PC, but when i try to run it on the server, it fails and gives the message below.
I have literally tried everything but it does not seem to work, i have even tried to copy the exact same folder that worked local on this PC onto the server. But it just won't start.
jens#clipster:~/Mc$ java -Xms1024M -Xmx2048M -jar minecraft_server.1.12.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: net/minecraft/server/MinecraftServer : 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 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
jens#clipster:~/Mc$
I would really appreciate any help i can get, than
If you look at Java docs of UnsupportedClassVersionError class it says:
Thrown when the Java Virtual Machine attempts to read a class
file and determines that the major and minor version numbers
in the file are not supported.
So JVM on your linux server doesn't support the version of JDK used to compile the new code. Version 52, implies your new code was compiler using JDK 1.8 and my guess is your Linux server runs any older Java version and hence this error.
I am run in eclipse getting below error
Please Any one tell me the solution
java.lang.UnsupportedClassVersionError: org/openqa/selenium/WebDriver : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
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:2625)
at java.lang.Class.privateGetPublicMethods(Class.java:2743)
at java.lang.Class.getMethods(Class.java:1480)
at org.testng.internal.TestNGClassFinder.(TestNGClassFinder.java:70)
at org.testng.internal.TestNGClassFinder.(TestNGClassFinder.java:40)
at org.testng.TestRunner.initMethods(TestRunner.java:400)
at org.testng.TestRunner.init(TestRunner.java:252)
at org.testng.TestRunner.init(TestRunner.java:222)
at org.testng.TestRunner.(TestRunner.java:171)
at org.testng.remote.support.RemoteTestNG6_9_10$1.newTestRunner(RemoteTestNG6_9_10.java:28)
at org.testng.remote.support.RemoteTestNG6_9_10$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_9_10.java:61)
at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:604)
at org.testng.SuiteRunner.init(SuiteRunner.java:170)
at org.testng.SuiteRunner.(SuiteRunner.java:117)
at org.testng.TestNG.createSuiteRunner(TestNG.java:1359)
at org.testng.TestNG.createSuiteRunners(TestNG.java:1346)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1200)
at org.testng.TestNG.runSuites(TestNG.java:1124)
at org.testng.TestNG.run(TestNG.java:1096)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)
The problem is that your Java installation is out of date.
The version number (52) is Java 8, so if you are getting an exception that says 52 is not understood, then you must be running those tests using a JVM that is Java 7 or earlier. Code that is compiled for that Java 8 platform will not run on a Java 7 (or earlier) JVM.
Java 7 is out of date, and well beyond the official "end-of-life" (April 2015) .... and you should upgrade.
If you insist on using an out-of-date Java platform for your development, then you are going to need to download the source code for the selenium libraries, and recompile them using a Java 7 compiler. (And, if selenium is starting to use Java 8 features, you will need to roll back to an earlier selenium release ... or backport.)