Search code examples
javalinuxunsupported-class-version

Can't run my program after compiling says unsupported class version error


I am a new user for linux. I just installed jdk1.7.0_02.rpm and tried to compile my program using javac tester.java When i try to run the file by java tester i get these errors

Exception in thread "main" java.lang.UnsupportedClassVersionError: tester : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.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:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)

Could not find the main class: tester. Program will exit.

Then i checked the java -version and it was :

java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.4) (fedora-61.1.10.4.fc16-i386)
OpenJDK Server VM (build 20.0-b11, mixed mode)

Now how do i change this version ? I even installed jre1.7.0_02 but nothing changed !

This is what is happening :

enter image description here


Solution

  • Use the cross-compilation options of javac. Specify a -source and -target version and follow the prompts re other options.


    Then please tell how?

    javac -source 1.6 -target 1.6 -bootclasspath /path/to/1.6/j2se/rt.jar *.java
    

    If you specify source/target, the 1.7 compiler will warn to use the -bootclasspath option, which is important to verify that the classes, methods and attributes referenced in the source are available in the target Jar. Earlier versions of the compiler failed to warn about the bootclasspath.