java.lang.UnsupportedClassVersionError: Bad version number in .class file
[at java.lang.ClassLoader.defineClass1(Native Method)]
is an error that you may face in running a compiled java class file.
So as you can see from the stack trace, a class has not been loaded. But which class? The problem is this error message does not show the name of the failed .class, isn't it?
No, it is not. This error is caused when you compile a .java file with one version of JDK and running the .class file with a different version of JVM.
Confused? You may say; same version is not required to compile and run.
Yes, that is true. But you can not run .class files that are compiled with a newer version than the JVM.
Say;
Now you know how to solve this issue, isn't it?
[at java.lang.ClassLoader.defineClass1(Native Method)]
is an error that you may face in running a compiled java class file.
So as you can see from the stack trace, a class has not been loaded. But which class? The problem is this error message does not show the name of the failed .class, isn't it?
No, it is not. This error is caused when you compile a .java file with one version of JDK and running the .class file with a different version of JVM.
Confused? You may say; same version is not required to compile and run.
Yes, that is true. But you can not run .class files that are compiled with a newer version than the JVM.
Say;
javac (compile) - version: XIf X is newer than Y; then you may face this issue at runtime.
java (run) - version: Y
Now you know how to solve this issue, isn't it?
Kamal Mettananada is a software engineer, Java explorer & author of Digizol, blog with computer related articles, tutorials, tips and many other information.
49 Comments for "java.lang.UnsupportedClassVersionError: Bad version number in .class file"
Please check the versions of javac and java on your computer and post them here, then we'll create the required commands.
I can fix my problem by you posted
java -version (always works)
javac -version (now never works)
darksalmon
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)
javac 1.6.0_12
I got the versions as above, but still getting this error. I have tried compiling it with or without -cp option, but it is still failing to run. I am able to get this to work from another workstation. Can you please help?
and java -version is showing 1.3.1 version
Best thing to resolve this would be, first remove all jre/jdk installations. (Better not to install two different versions on one machine.)
Then check for versions of both. That way you will be able to resolve this issue.
java.lang.UnsupportedClassVersionError: org/codehaus/groovy/tools/GroovyStarter (Unsupported major.minor version 49.0)
and my java -version is java version "1.6.0_11"
Any thoughts?
Doesn't it identify the bad class file?
java.lang.UnsupportedClassVersionError: Bad version number in .class file
[at java.lang.ClassLoader.defineClass1(Native Method)]
I was using JDK 1.5
I was trying to connect from eclipse using "postgresql-8.3-603.jdbc4.jar"
this driver. This jdbc driver.
After the error message i went to http://jdbc.postgresql.org/download.html
and found a compatibility list like this
* JDK 1.1 - JDBC 1. Note that with the 8.0 release JDBC 1 support has been removed, so look to update your JDK when you update your server.
* JDK 1.2, 1.3 - JDBC 2.
* JDK 1.3 + J2EE - JDBC 2 EE. This contains additional support for javax.sql classes.
* JDK 1.4, 1.5 - JDBC 3. This contains support for SSL and javax.sql, but does not require J2EE as it has been added to the J2SE release.
* JDK 1.6 - JDBC4. Support for JDBC4 methods is limited. The driver builds, but the majority of new methods are stubbed out.
So i used "postgresql-8.3-604.jdbc3.jar" instead of jdbc4.
And then my connection was found by eclipse ran without any problem
Any idea?
I have check everything related to java so all is pointing to this version
Thanks in advance
Can you try starting Tomcat without the projects that you have deployed there? Then you will be able to locate the web application that causes this error.
This was driving me nuts - until I saw my Eclipse JRE was 1.5 and this setting was at 1.6!!!!
I find that a few days before I had installed Zend Studio on Windows 7, while replacing my JRE becoz Zend studio does't work well on this window and currently this is the one way to get it work well on Win7.
So the solution is to find the appropriate JDBC.
Is it possible to have version X and version Y such that Y=X and still get this?:
Error compiling the report java source!
java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:676)
... and so on....
Trying to compile a jasper report on iReport 3.7.1 (netbeans platform)...
Any guess?
Grazie mille!!
Sofia
Mac OSX v. 10.5.8 Intel
Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-9M3125)
sofiad:~ sofi$ javac -version
javac 1.6.0_17
Hi Sofia,
This error message is only there when this version conflict occurs.
Even though you are using 1.6.0_17 jdk & jre; you may be using some other jar files that were generated with classes generated with a newer version of Java. So you can check Java versions used for them as well?
Running from the command line (Windows XP) I have,
Java as: java version "1.4.2_03"
Javac as: javac 1.6.0_11
This is causing a conflict. I can't find the older version of the JRE in the Windows Control Panel to remove it I can only see Java 6 Update 11 and the JDK SE Update 11. I can't find any reference to the older java on the Java console in the Windows Control Panel either.
When I'm using NetBeans, everything is working correctly as it is pointing to right folders.
My PATH is C:\Program Files\Java\jdk1.6.0_11\bin
How do I remove the older version?
If you are interested, You can easily reproduce it in Eclipse
Install jdk1.5 and Jdk1.6 in your system.
Create a simple java project in eclipse
Set the compiler version to 1.6 through menu->Windows-Preference->Compiler to 1.6
the select the project and change the buildpath jre to 1.5. (check eclipse help)
Try to run the program.
You get the this error!!!
I was running an ANT build with javac version 1.6_0 update 21
....
...
< javac srcdir="src/main/test" destdir="target/classes" classpathref="compile.classpath" />
....
The classes were getting deployed to Apache Tomcat 6.0.26 container...I think Apache Tomcat still requires version 1.5...when I added my ant script above following two conditions it redeployed ...it worked for me. Here is the updated antscript line:
< javac srcdir="src/main/test" destdir="target/classes" classpathref="compile.classpath" source="1.5" target="1.5" />
I have a question that if I compile and build (war and ear files) with 1.6.0_22 and my weblogic server is running on 1.6.0_11, then will it work?
Both are using java 1.6 but server has 1.6 with updates 11 and in my system I have Java 1.6 with update 22.
Please put your suggestions.
Thanks in advance !!!!
-RP
3 Cheers!....
:D