在编译不支持的类版本错误后无法运行我的程序

时间:2012-01-27 06:02:13

标签: java linux unsupported-class-version

我是linux的新用户。我刚刚安装了jdk1.7.0_02.rpm并尝试使用javac tester.java编译我的程序当我尝试按java tester运行文件时出现这些错误

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)

无法找到主要类:测试人员。程序将退出。

然后我检查了 java -version ,它是:

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)

现在我如何更改此版本?我甚至安装了jre1.7.0_02但没有改变!

这就是发生的事情:

enter image description here

5 个答案:

答案 0 :(得分:4)

在终端中运行:

sudo update-alternatives --config java

并选择Java的首选版本。如果您没有看到所需的版本,请查看this网站。

答案 1 :(得分:2)

使用javac的{​​{3}}。指定-source-target版本,并按照提示重新选择其他选项。


  

然后请告诉我们如何?

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

如果指定source / target,1.7编译器将警告使用-bootclasspath选项,这对于验证源中引用的类,方法和属性非常重要。可在目标Jar中使用。早期版本的编译器未能警告bootclasspath

答案 2 :(得分:0)

好的,首先,您不应该以root身份运行Java应用程序构建。

更改为具有sudo功能的用户帐户,并且在您绝对需要之前不要使用root privs。

看起来javac已经更新到版本7但java没有。

这是什么回报:

javac -version

您还应该告诉我们您的JAVA_HOME环境变量的当前值。像这样:

set | grep ^JA

答案 3 :(得分:0)

运行Java程序时,您需要系统使用JRE 1.7。为了实现这一点,请确保JAVA_HOME正确设置为JRE 1.7:

export JAVA_HOME=/path/to/JRE1.7

还要确保您的PATH-Variable指向正确的java / bin目录:

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

将这些环境变量保留在重新启动/注销之外,取决于您正在使用的Linux发行版......

编辑:有关说明:如果您正在使用1.7版进行编译(默认情况下为1.7),则必须使用> = 1.7 JRE。

所以你有两个选择:

  1. 使用JRE 1.7运行您使用1.7编译的程序(如上所述)
  2. 使用“-target 1.6”cmdline-argument为javac创建1.6兼容代码  编译。

答案 4 :(得分:0)

没有任何理由,系统环境中的JAVA_HOME也必须设置。虽然如果您在应用程序属性中设置JAVA_HOME。