Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';编译后无法运行我的程序表示不支持的类版本错误_Java_Linux_Unsupported Class Version - Fatal编程技术网

Java Can';编译后无法运行我的程序表示不支持的类版本错误

Java Can';编译后无法运行我的程序表示不支持的类版本错误,java,linux,unsupported-class-version,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(Nat

我是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)
找不到主类:tester。程序将退出

然后我检查了java版本,结果是:

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,但没有任何改变

这就是正在发生的事情:

在终端中运行:

sudo update-alternatives --config java
并选择首选的Java版本。如果您没有看到要查找的版本作为选项,请查看站点。

在终端中运行:

sudo update-alternatives --config java

并选择首选的Java版本。如果您没有将要查找的版本作为选项,请查看站点。

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

更改为具有sudo功能的用户帐户,在绝对需要之前不要使用root priv

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

这意味着什么:

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

set | grep ^JA

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

更改为具有sudo功能的用户帐户,在绝对需要之前不要使用root priv

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

这意味着什么:

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

set | grep ^JA
使用
javac
。指定
-源
-目标
版本,并按照提示重新选择其他选项


那么请告诉我怎么做

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

使用
javac
。指定
-源
-目标
版本,并按照提示重新选择其他选项


那么请告诉我怎么做


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

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

export JAVA_HOME=/path/to/JRE1.7
还要确保PATH变量指向正确的java/bin目录:

export PATH=$PATH:/path/to/JRE1.7/bin
在重新启动/注销之后保留这些环境变量取决于您使用的Linux发行版

编辑:澄清一下:如果使用1.7版进行编译(默认情况下目标为1.7版),则必须使用>=1.7的JRE

因此,您有两种选择:

  • 使用JRE 1.7运行使用1.7编译的程序(如上所述)

  • 编译

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

    export JAVA_HOME=/path/to/JRE1.7
    
    还要确保PATH变量指向正确的java/bin目录:

    export PATH=$PATH:/path/to/JRE1.7/bin
    
    在重新启动/注销之后保留这些环境变量取决于您使用的Linux发行版

    编辑:澄清一下:如果使用1.7版进行编译(默认情况下目标为1.7版),则必须使用>=1.7的JRE

    因此,您有两种选择:

  • 使用JRE 1.7运行使用1.7编译的程序(如上所述)

  • 编译

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

    毫无理由,但也必须在系统环境中设置JAVA_HOME。虽然如果您在应用程序属性中设置JAVA\u HOME。

    我无法从1.7.0\u 02运行源代码并在VM 1.6.0\u 02中运行,请告诉我如何运行?我不知道我在哪里出错是的,我可以运行我的程序。但是没有别的办法吗。就像在windows中一样,我们可以通过编辑路径变量来设置路径!我尝试了@quaylar提到的方法,但我得到了相同的错误。“是的,我能够运行我的程序。”太好了,当你有时间的时候,请记下我的答案。“但是没有别的办法吗?”除了最好的办法?你为什么会在意呢?我发现很多次你在评论中对问题的回答都不直接。当我问“没有其他方法”时,你可以回答。我无法从1.7.0_02运行源代码,也无法在VM 1.6.0_02中运行,那么请告诉我如何运行?我不知道我在哪里出错是的,我可以运行我的程序。但是没有别的办法吗。就像在windows中一样,我们可以通过编辑路径变量来设置路径!我尝试了@quaylar提到的方法,但我得到了相同的错误。“是的,我能够运行我的程序。”太好了,当你有时间的时候,请记下我的答案。“但是没有别的办法吗?”除了最好的办法?你为什么会在意呢?我发现很多次你在评论中对问题的回答都不直接。当我问“没有其他方法”时,你可以回答。好的,这告诉我们安装没有完全正确运行。或者可能是root的shell设置具有硬编码路径。“哪个java”和“哪个javac”的输出是什么?请阅读问题java是1.6.0_02,javac是1.7.0_02Suhail-我回答的全部要点是让OP检查