1

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

3
  • 2
    As an aside, could you please learn how to copy/paste text from your CLI? That screen-shot was less useful, yet took more bandwidth. Commented Jan 27, 2012 at 7:14
  • the accepted answer is the only one that could run the my program Commented Jan 28, 2012 at 3:49
  • You haven't solved this problem. This is an installation issue, and has more to do with the way your Linux environment is configured than anything to do with Java. Commented Feb 1, 2012 at 16:08

5 Answers 5

4

Run in a terminal:

sudo update-alternatives --config java

And choose the preferred version of Java. If you don't see the version you're looking for as an option, look at this site.

Sign up to request clarification or add additional context in comments.

Comments

3

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.

7 Comments

I can't run the source from 1.7.0_02 and run in VM 1.6.0_02
Then please tell how ? I don't know where am i making a mistake
Yes i am able to run my program. But isn't there any other way. Like in windows we can set the path by editing the path var ! I tried the way @ quaylar mentioned but i get the same error.
"Yes i am able to run my program." Great, mark my answer correct when you get a moment. "But isn't there any other way." Other than the best way? Why would you care?
I have found many times that your replies to the query in comments are not straight. When i asked "isn't there any other way" you could have answered it.
|
0

OK, first off, you shouldn't be running Java application builds as root.

Change to a user account with sudo capability, and don't use root privs until you absolutely need them.

It looks like javac has been updated to version 7 but java has not.

What does this return:

javac -version

You should also tell us the current value of your JAVA_HOME environment variable. Like this:

set | grep ^JA

3 Comments

Ok, so this tells us that the install didn't run fully correctly. Or possibly that the shell setup for root has hardcoded paths. What's the output of "which java" and "which javac" ?
Read the question please java is 1.6.0_02 and javac is 1.7.0_02
Suhail - the entire point of my response was to get the OP to check directly, at shell level, what had actually been installed, not simply what the tool tells you has been installed. You should never assume that just because an installation tells you it ran correctly, that it actually did.
0

You need your system to use the JRE 1.7 upon running Java-Programs. In order to accomplish that, make sure that JAVA_HOME is correctly set to the JRE 1.7:

export JAVA_HOME=/path/to/JRE1.7

Also make sure, that your PATH-Variable points to the proper java/bin directory:

export PATH=$PATH:/path/to/JRE1.7/bin

Persisting these environment-variables beyond reboots/logouts depend on the Linux-distro you are using...

EDIT: For clarification: If you are compiling with version 1.7 (to target 1.7 by default), you have to use a >= 1.7 JRE.

So you have 2 options:

  1. Using JRE 1.7 to run the program you compiled with 1.7 (as outlined above)
  2. Creating 1.6 compliant code using the "-target 1.6" cmdline-argument to javac when
    compiling.

4 Comments

"You need your system to use the JRE 1.7" You say that like it is the preferred & only option. It is neither.
I did this [root@Feddy non-admin]# export JAVA_HOME=/usr/java/jre1.7.0_02 [root@Feddy non-admin]# export PATH=$PATH:/jre1.7.0_02/bin but nothing happened
I guess the second one should be: export PATH=$PATH:/usr/java/jre1.7.0_02/bin
couldn't run it..The same message after correcting the second statement
0

With no reason at all, JAVA_HOME in system environment must be set too. Although If you set JAVA_HOME in app properties.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.