ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

暑期实训java不支持发行版本5

2022-07-02 09:01:16  阅读:218  来源: 互联网

标签:文件 Java JDK 二进制 1.8 暑期 实训 版本 java


This article is meant as an extension to Angie Jones’ “IntelliJ – Error:java: release version 5 not supported”.
Angie在她的文章中建议IntelliJ IDEA解决方案,其中显示错误消息“不支持发行版本5”。 前两个选项在IDEA中有效,但不可持续,您将在后面学习。 最后一个选项可以解决实际问题,但仅适用于基于Maven的版本。 回顾一下,基于Maven的构建的正确解决方案(另请参见Maven编译器插件)如下:

1.8 1.8 1 2 3 4 我想为这个问题提供一些背景知识,并建议以不同的方式解决该问题。

What is the actual problem?
为了找到适用于所有Java项目的合适解决方案,无论使用哪种构建工具,让我们深入研究实际问题。

在过去的20多年中,Java经历了几个主要版本。 每一个都引入了新版本的二进制格式,有时还引入了语言功能(例如Java 5中的枚举,Java 8中的lambda,Java 9中的模块,Java 10中的var,Java-2中的var,HTTP-2客户端Java 11…)。 但是,Java及其虚拟机高度向后兼容。 您可以使用20年的二进制文件,它们将与最新版本的Java一起运行就可以了(有例外)。

从Java源文件生成二进制文件的Java编译器支持交叉编译为各种语言级别,即以不同Java版本的格式创建这些二进制文件。 但是,有时不再支持较旧的语言级别。 从Java 9开始,编译器无法再生成Java 5二进制文件。 如果现在使用目标版本的Java 5直接或通过构建工具间接运行编译器,它将显示错误消息发行版本5不支持。
该错误消息的根本问题是Java开发工具包(JDK)太新了,无法生成旧的二进制文件。

Proper Solutions
因此,您的JDK太新了,无法生成Java 5二进制文件。 有两种解决此问题的方法。

Use an older JDK
如前所述,JDK 9放弃了对交叉编译到Java 5二进制文件的支持。 这意味着,只要您使用JDK 8或更低版本,您就可以实际创建Java 5二进制文件。 但是,不建议使用此方法。 在生产运行时环境中应该没有理由坚持使用Java 5。 自2015年以来不支持JDK 5,并且不再提供安全补丁。

Change the desired target language level
您应该创建与生产环境中的Java运行时环境版本匹配的二进制文件,而不是交叉编译为Java 5二进制文件。 在2023年之前,至少应使用Java 8才能获得安全补丁。 另请参阅Wikipedia上的Java版本历史记录。 但是,我建议使用Java 11来利用介于LTS和LTS版本之间的各种新功能。
那么,如何更改目标版本呢?

Maven-based projects
出于非常好的原因,Maven仍广泛用于Java生态系统中。 但是,Maven已经很老了,一些默认设置也是如此。 其中之一是语言级别,无论您使用什么JDK,它默认为Java 1.5。

解决方式1:
直接Ctrl+shit+alt+s出现以下面版

因为我本地安装的jdk是14版本,所以这里显示的就是14版本,这里没有问题,然后向下找module模块,然后发现这里的langeage level居然是5.

修改到对应的版本,然后应用保存就可以关闭了。

然后去File里找Settings打开,在打开的页面中找到Build开头的那一串,接着找它下面Compiler下的java compiler,右侧还要修改成自己所使用的java版本

最后应用保存,就可以正常使用了。

解决方式2:
解决方式1存在的小问题
每次创建新项目的时候都要设置一次.
每次修改pom.xml文件的时候都要设置一次.
若设置的版本与实际不一致,还会出现 error:java:不支持发行版本13之类的报错
<半劳永逸解决>
在自己的pom.xml文件指定编译的jdk版本。
方法:pom.xml文件添加配置,注意标签位置与同级,位于标签下。
下列指定编译版本为13

org.apache.maven.plugins maven-compiler-plugin 3.8.0 1.8 1.8 utf-8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 在每次建立新项目时候需要重新配置

解决方式3:(推荐)
<一劳永逸解决>
​ 在 maven地址\conf\setting.xml中设置默认jdk版本…

代码:1.8是你自己的jdk版本号

development 1.8 true 1.8 1.8 1.8 1 2 3 4 5 6 7 8 9 10 11 12 将上述代码放到maven\conf\setting.xml中并且复制一份到 C:\Users\本地用户名.m2中 我的是C:\Users\xx.m2

重启idea
设置完成后,新建maven项目,不用修改设置即可编译成功.

Plain IntelliJ IDEA projects
如果您没有在IntelliJ中为Java项目选择任何构建系统,则只需确保已根据项目的JDK配置了语言级别。 您可以在项目结构设置中执行此操作。 按cmd + shift + A并开始输入内容以打开设置。 使用JDK 9+时,您需要立即更改目标级别。
Java 9-11:目标级别Java 6Java 12+:目标级别Java 7

Conclusion
在这篇文章中,我解释了错误消息发行版5不支持的根本原因。 通过更改IntelliJ项目设置,可以在本地解决此问题。 但是,如果您想正确解决问题,则需要更改项目的构建配置文件。 否则,在下次导入IntelliJ时,您将需要再次更改它。 此外,该版本在每台计算机上的行为可能会有所不同。 CI服务器和其他未更改IntelliJ IDEA设置的服务器将继续生成Java 5二进制文件。 在构建配置文件中保留语言级别将在机器之间产生稳定且可预见的结果。
借鉴:https://blog.csdn.net/cunxiedian8614/article/details/105696396?spm=1001.2014.3001.5506
————————————————
版权声明:本文为CSDN博主「星神学Java」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41428418/article/details/124169175

标签:文件,Java,JDK,二进制,1.8,暑期,实训,版本,java
来源: https://www.cnblogs.com/zzhblog233/p/16436653.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有