类文件有错误的版本52.0,应该是50.0

时间:2015-01-27 22:05:05

标签: java intellij-idea

我试图用IntelliJ的想法编译我的项目。我在外部jar文件中使用一个类,并在接收上述错误的编译时使用。

据我所知,它说jar文件是使用比IntelliJ使用的Java版本更新的Java版本编译的。我的问题是如何使它们兼容?我已将Mac上的Java更新为1.8,当我运行java -versionjavac -version时,它确认了这一点。

我错过了什么? (除了Java开发经验)

8 个答案:

答案 0 :(得分:12)

选择"文件" - > "项目结构"。

"项目设置"选择"项目"

从那里你可以选择" Project SDK"。

答案 1 :(得分:7)

这意味着您的Java运行时版本是1.8,但您的编译器版本(javac)是1.6。要简单地解决它,只需将Java版本从1.8撤回到1.6。

但是如果您不想更改Java运行时版本,请执行以下步骤:

  1. JAVA_HOME =“你的jdk v1.8文件夹路径”,以确保jdk也是v1.8 并再次使用java -version和javac -version来确保它
  2. 确保IntelliJ的编译器模式设置为符合v1.6 但我试过了。它没有解决我的问题。

答案 2 :(得分:2)

由于尝试使用java 8编译我的项目失败,然后重新尝试使用java 6进行编译,因此遇到了与标题相同的错误。有些类在第一次尝试时编译为8并且没有使用6重新编译。混合类然后没编译。清洁工程解决了这个问题。 这个答案与问题并不严格相关,但可能对某人有用。

答案 3 :(得分:1)

我遇到同样的问题&#34;类文件有错误的版本52.0,应该是50.0&#34;当我通过ant运行java时...我所做的只是添加 fork =&#34; true&#34; 无论我在哪里使用 javac 任务,它都有效... < / p>

答案 4 :(得分:1)

如果错误来自外部依赖 (maven/gradle),则您导入的版本需要更新的 jdk。 (例如,您导入了需要 Java 11 的咖啡因 3.0.x,但您使用的是 Java 8。

解决方案:将依赖降级到与您的jdk兼容的最新版本。

Java 版本号可以在 Java class file wiki page(字节偏移 6-7)中找到。

答案 5 :(得分:0)

如果您使用nuget sources update -name Itm_Feed -username 123 -password <PAT> 进行编译,但出现此错误,则 删除所有javac个文件

.class

然后重新编译。

rm *.class     # On Unix-based systems

答案 6 :(得分:0)

如果 IntelliJ 中的问题,则在终端中执行此操作(而不是在 IntelliJ 终端中)- 1.将java版本更改为适当的(在我的情况下使用jdk 1.4,因为问题是class file has wrong version 55.0, should be 52.0) 2. java -Dspring.profiles.active=test -jar build/libs/<jarname>.jar
运行这个

答案 7 :(得分:-1)

在你的IntelliJ想法中,找到tools.jar将它替换为来自JDK8的tools.jar