我是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但没有改变!
这就是发生的事情:
答案 0 :(得分:4)
答案 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。
所以你有两个选择:
答案 4 :(得分:0)
没有任何理由,系统环境中的JAVA_HOME也必须设置。虽然如果您在应用程序属性中设置JAVA_HOME。