图片:
命令提示符显示版本
错误图片
import java.applet.Applet;
import java.awt.*;
public class Hello extends Applet {
// Java applet to draw "Hello World"
public void paint (Graphics page) {
page.drawString ("Hello World!", 50, 50);
}
}
<HTML>
<HEAD>
<TITLE>HelloWorld Applet</TITLE>
</HEAD>
<BODY>
<APPLET CODE="Hello.class" WIDTH=300 HEIGHT=150>
</APPLET>
</BODY>
</HTML>
Hello : Unsupported major.minor version 52.0
问题可能是什么?
答案 0 :(得分:549)
问题是由于Java版本不匹配。参考Wikipedia Java Class Reference:
这些是指定的主要数字。关于不受支持的major.minor版本的错误是因为在编译期间您在运行时使用更高的JDK和更低的JDK 。
因此,'major.minor版本52.0'错误可能是因为jar是在JDK 1.8中编译的,但是您尝试使用JDK 1.7环境运行它。报告的数字是必需的号码,而不是您使用的号码。要解决这个问题,最好让JDK和JRE指向相同的版本。
在IntelliJ IDEA中,
重启IntelliJ IDEA。
另一种可能有用的方法是指示IntelliJ IDEA启动哪个JDK版本。
转到: / Applications / IntelliJ \ IDEA \ 15 \ CE.app/Contents/Info.plist 并用以下代码替换JVM版本:
<key>JVMVersion</key>
<string>1.8*</string>
答案 1 :(得分:88)
解决该问题的智能方法是使用最新的SDK进行编译,并在编译时使用cross compilation options。要完全正确使用选项,需要目标版本的JRE(非JDK )的rt.jar
。
鉴于该applet的性质,它看起来可以编译为与Java 1.1一起使用。
答案 2 :(得分:62)
您需要在IDE中将编译器合规性级别更改回1.7。
这可以在IDE的首选项设置中完成。例如,在Eclipse中转到菜单 Windows →首选项,选择Java,然后展开它。然后选择编译器并将合规性级别更改为1.7。我相信这会从那里起作用。
答案 3 :(得分:50)
您必须使用相同版本的Java运行和编译您的应用程序。
如果你正在使用Eclipse,你应该做两件事:
在Eclipse中,单击&#34; Window&gt;首选项&#34; ,在左侧显示的窗口中,在&#34; Java&#34; 下,单击&#34;已安装的JRE&# 34; ,单击&#34;添加...&#34; 并导航到包含JDK的文件夹。
右键单击您的项目并单击&#34; Properties&#34; ,在出现的窗口中,单击&#34 ; Java编译器&#34; 并取消选中&#34;在Java Build Path&#34; 上使用执行环境中的合规性,这允许您在列表中选择& #34;编译器编制级别&#34; 与您在上一步中设置的版本相同。
答案 4 :(得分:25)
您需要将Java版本升级到Java 8.
# cd /opt/
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-x64.tar.gz"
# tar xzf jdk-8u51-linux-x64.tar.gz
# cd /opt/
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-i586.tar.gz"
# tar xzf jdk-8u51-linux-i586.tar.gz
注意:如果上述wget命令对您不起作用,请观看此示例视频以使用终端下载Java源存档。
解压缩归档文件后,使用alternatives命令进行安装。可以在chkconfig包中找到alternatives命令。
# cd /opt/jdk1.8.0_51/
# alternatives --install /usr/bin/java java /opt/jdk1.8.0_51/bin/java 2
# alternatives --config java
此时Java 8已成功安装在您的系统上。我们还建议使用替代方法设置javac和jar命令路径:
# alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_51/bin/jar 2
# alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_51/bin/javac 2
# alternatives --set jar /opt/jdk1.8.0_51/bin/jar
# alternatives --set javac /opt/jdk1.8.0_51/bin/javac
使用以下命令检查已安装的Java版本。
root@tecadmin ~# java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
大多数基于Java的应用程序使用环境变量来工作。使用以下命令设置Java环境变量:
# export JAVA_HOME=/opt/jdk1.8.0_51
Setup JRE_HOME Variable
# export JRE_HOME=$JAVA_HOME/jre
Setup PATH Variable
# export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
请注意,对PATH变量的更改首先放置新的Java bin文件夹,以便它们覆盖路径中的任何现有java / bin。在您的路径中留下两个java / bin文件夹有点草率,因此建议您将它们作为单独的任务进行清理。
此外,将所有上述环境变量放在/etc/environment
文件中,以便在系统启动时自动加载。
答案 5 :(得分:22)
我遇到了同样的问题...... JDK和插件版本冲突。
我使用1.8 ...最新的编译,并且该消息开始出现。 所以我搜索了JRE 7(http://www.oracle.com/technetwork/java/javase/downloads/server-jre7-downloads-1931105.html)......并再次安装...... 现在1.8和1.7在同一台计算机上。
使用NetBeans,编译和定位到1.7版,解决了我的问题。
答案 6 :(得分:19)
答案 7 :(得分:17)
如果您正在使用NetBeans IDE,请右键单击该项目并选择属性并转到 sources ,然后您可以将源/二进制格式更改为降低JDK版本。
答案 8 :(得分:13)
当您尝试将使用Java 1.8编译器编译的类运行到较低的JRE版本时,会出现不支持的major.minor版本52.0,例如: JRE 1.7或JRE 1.6。解决此错误的最简单方法是安装最新的Java版本,即Java 8并运行您的程序。
了解详情:http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html#ixzz4AVD4Evgv
答案 9 :(得分:11)
当您在java的higher version
上编译项目(比如jdk 1.8)然后在lower version
(比如jdk 1.7)上运行它时会发生这种情况。
如果您的项目路径中有JRE-1.7库,那么
1.右键单击项目
2.转到属性
3.选择项目构面
4.在行中查找Java,然后选择 version (比如1.7),如果使用JRE-1.7
5.单击应用并运行您的项目。
答案 10 :(得分:10)
我通过删除旧版本的JRE并安装JRE 8解决了我的问题。
答案 11 :(得分:10)
我可以使用以下解决方案解决同样的问题。
在我的项目中,我添加了一个用Java 8创建的JAR文件。我的项目是指JRE 7.当我将项目JRE更改为8时,我的问题就解决了。
步骤:
在Eclipse中,右键单击项目浏览器中的项目名称→构建路径→库→单击JRE版本→单击编辑→已安装的JRE →添加→标准VM →选择JRE主点击路径(路径应为localePath\java\jdk1.8.0_25\jre
)→提供名称→保存→为项目选择相同的JRE→完成→确定。刷新/构建项目→尝试运行Java文件。它应该工作。
答案 12 :(得分:9)
我有Java 1.7&amp;安装1.8(使用SBT 2.4,需要Java 1.8)。 即使我的项目链接到Java 1.8,我也必须将JAVA_HOME环境变量更改为1.8。 最后,问题解决了。
答案 13 :(得分:6)
答案 14 :(得分:6)
解决问题所需要做的就是......确保您的Java版本在编译和运行时都是相同的。无论您使用什么工具或IDE。
答案 15 :(得分:5)
如果您使用的是Linux并且安装了不同版本的Java,请使用以下命令:
sudo update-alternatives --config java
这将提供在系统上安装的Java版本之间切换的快速方法。通过选择Java 8,我将解决您的问题。
答案 16 :(得分:5)
当我安装一个全新的Java 1.8时,这种情况发生在我身上,但是旧的命令行解释器已经打开了。
它有一条旧路径并继续使用Java 1.7执行应用程序,而项目已经使用Java 1.8构建。
答案 17 :(得分:4)
如果您的JDK版本是正确的。可能导致此错误的另一个原因是您的Android Studio版本较低,但您的Gradle版本过高。 Upgrade your IDE to a newer version
可能有助于此。
答案 18 :(得分:3)
您需要使用JDK 1.7.0而不是JDK 1.8.0。
要确保它,您需要删除计算机上的JDK 1.8.0。
如果您使用Mac,则需要删除:
/Library/Java/JavaVirtualMachines/jdk.jdk
/Library/PreferencePanes/JavaControlPanel.prefPane
/ Library / Internet Plug-Ins / JavaAppletPlugin.plugin
然后,您需要重新安装JDK 1.7.0,并且您将成功生成.jar文件。
答案 19 :(得分:3)
如果您正在使用Eclipse v4.4(Luna)并且已经完成上述所有步骤,则可能需要检查运行配置设置。
可能有多种可能导致此错误。根本原因是项目需要在JDK1.8 / JRE8中编译时不匹配,而环境编译器是JDK1.7 / JRE7。
您可以查看my blog post以完成所有设置。
答案 20 :(得分:3)
将您的安道尔版本升级到JDK 1.8。
这是版本不匹配,您的编译器正在寻找Java版本8并且您拥有Java版本7.
你可以在版本8中运行版本7中的应用程序版本,但是你不能反过来,因为当涉及更高级别时,版本嵌入了更多的功能,增强功能而不是以前的版本。
Download JDK version from this link
并设置此
的JDK路径答案 21 :(得分:1)
我在Mac OS X v10.9(小牛队)的Eclipse中遇到了这个问题。我在Stack Overflow上尝试了很多答案...最后,经过一整天我 *安装了新版本的Android SDK(并更新了Eclipse,菜单 Project → Properties → Android 使用新路径)* 。
我必须获得SDK更新,但只删除我认为必要的更新,避免我没有使用的API(比如Wear和TV).. 这就是诀窍 即可。显然,似乎我在整个过程中某处损坏了我的SDK。
BTW ..我确实看到错误重新出现在我的工作区中的一个项目,但它似乎与appcompat-7的导入相关,我没有使用它。在完成该项目之后,到目前为止还没有看到问题重新出现。
答案 22 :(得分:1)
只需转到http://java.com/en/download/并更新您的JRE版本
答案 23 :(得分:0)
如果您使用IntelliJ IDEA,请转到项目结构( Ctrl + Alt + Shift + S < / kbd>),您可以更改项目的JDK。
答案 24 :(得分:0)
只想添加此内容。我今天遇到了这个问题。调整了我的项目中的设置,重建和相同的问题。我(错误地)认为更改项目(Eclipse)中的设置会导致我的项目所依赖的项目也被重新编译。 调整依赖关系树中所有项目的设置解决了这个问题。
答案 25 :(得分:0)
这些答案都没有帮助我,但我找到了解决办法 我有一个在Wildfly 8.2中使用的webproject,使用Maven构建,源代码和目标在maven-compiler-plugin上设置为1.8,并且所有Eclipse和Maven设置都设置为Java 1.8。 问题是Wildfly 8.2无法处理Java 1.8,因此我必须将所有内容设置为1.7并且它能够正常工作。