我正在尝试使用Notepad++作为我的多功能工具编辑、运行、编译等。

我安装了JRE,并将路径变量设置为/bin目录。

当我在Notepad++中运行“Hello world”时,我收到以下消息:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

我认为这里的问题在于版本;Java的某些版本可能是旧的或太新的。

如何修复?我应该安装JDK,并将路径变量设置为JDK而不是JRE吗?JRE或JDK中的PATH变量有什么区别?


当前回答

您试图使用不支持编译代码的Java版本运行程序。所以基本上,您必须使用更高版本编译代码,并尝试使用更低版本运行代码。

正如你所得到的

Unsupported major.minor version 51.0

版本51.0对应于J2SE 7,您很可能用Java 7编译了代码,并尝试使用较低版本运行它。检查java版本显示的内容。它应该是Java 7版本。如果没有,请在PATH/JAVA_HOME中进行适当的更改。或者您可以使用试图运行代码的相同版本进行编译。如果配置令人困惑,您可以始终给出绝对路径/home/user/jdk1.7.0_11/bin/javac和/home/user/jdk1.70_11/bin/java。

其他回答

我在Grails项目的SpringSourceTool(STS)IDE中也遇到了同样的问题。我检查了已安装的Java版本和项目Java版本为1.7。*。后来我发现在GGTS.ini文件中,Java版本设置为1.6:

解决方案:

-Dosgi.requiredJavaVersion=1.6更改为-Dosgi.requiredJavaVersion=1.7在-vmargs之前添加以下两行-虚拟机jdk1.7.0_21/jre/lib/amd64/server/libjvm.so

问题已解决。编码愉快。

最常见的问题是JAVA_HOME变量配置错误,如果您安装了多个,该变量应指向正确的JAVA开发工具包库。

要查找SDK Java文件夹的位置,请运行以下命令:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian/Ubuntu

要检查您安装了哪个java(openjdk),请通过以下方式进行检查:

dpkg -l "openjdk*" | grep ^i

or:

update-java-alternatives -l

要更改它,请使用:

update-alternatives --config java

如果需要,请使用sudo作为前缀。

选择另一个java版本。

或检查哪些可供安装:

apt-cache search ^openjdk

如果需要,请使用sudo作为前缀。

然后可以安装,例如:

apt-get install openjdk-7-jre

如果需要,请使用sudo作为前缀。

Fedora、Oracle Linux、Red Hat

通过以下方式安装/升级适当的软件包:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

java-1.7.0-openjdk包仅包含java Runtime Environment。如果您想开发Java程序,请安装Java-1.7.0-openjdk-devel包。

BSD

FreeBSDPorts集合中有一个名为openjdk7的openjdk7包,可能需要重新配置。

请参阅:OpenJDK wiki页面。

窗户

只需从Oracle站点安装适当的Java SE开发工具包库或安装

詹金斯

如果您遇到Jenkins的问题,请参阅:

JENKINS-30561-无法使用SSH启动代理

然而,选择正确版本的Java(更新版本)和更新选项应该是可行的。

当从Eclipse运行Ant时,我收到了同样的错误消息,但这里提到的其他解决方案并没有解决我的问题。有趣的是,从Windows命令行运行Ant运行得很好,所以这必须是Eclipse中的配置问题。

事实证明,在Eclipse下,您可以指定Ant应该运行的环境,并将其设置为JRE而不是JDK。

转到:运行->外部工具->外部工具配置。。。为项目选择Ant build.xml(如果有多个项目)激活选项卡“JRE”这里选择了“单独的JRE:jre6”。当我将其从1.6或1.7系列更改为JDK时,错误消失了。

我也遇到了同样的问题,我在Mac上用这个解决方案解决了这个问题。我希望这对某人有所帮助。这是因为系统不知道更新版本的JDK,它仍然指向旧的JDK。

如果使用ant,可以在build.xml文件中指定编译器的“目标”,如下所示:

 <target name="compile" depends="init">
    <javac executable="${JAVA_HOME}\bin\javac" srcdir="${src.dir}" target="1.6" destdir="${classes.dir}" debug="true"
        deprecation="true" classpathref="compile.classpath" encoding="utf8">
        <include name="**/*.java" />
    </javac>
</target>