我试图用IntelliJ的想法编译我的项目。我在外部jar文件中使用一个类,并在接收上述错误的编译时使用。
据我所知,它说jar文件是使用比IntelliJ使用的Java版本更新的Java版本编译的。我的问题是如何使它们兼容?我已将Mac上的Java更新为1.8,当我运行java -version
或javac -version
时,它确认了这一点。
我错过了什么? (除了Java开发经验)
答案 0 :(得分:12)
选择"文件" - > "项目结构"。
"项目设置"选择"项目"
从那里你可以选择" Project SDK"。
答案 1 :(得分:7)
这意味着您的Java运行时版本是1.8,但您的编译器版本(javac)是1.6。要简单地解决它,只需将Java版本从1.8撤回到1.6。
但是如果您不想更改Java运行时版本,请执行以下步骤:
答案 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