跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > 低版本jdk运行高版本编译jar包失败(class file version 61.0), this version of the Java Runtime class file 52.0

低版本jdk运行高版本编译jar包失败(class file version 61.0), this version of the Java Runtime class file 52.0

时间:2024-03-30 13:45:47 来源:网络cs 作者:康由 栏目:卖家故事 阅读:

标签: 版本  编译  失败  运行 
阅读本书更多章节>>>>

省流:使用jdk1.8执行17编译的包,启动报错。

背景:

        项目运行中难免出现服务器环节集成其它jar包的情况,而其它jar包的jdk版本可能和我们业务项目的jdk版本不一致,如果比我们业务版本低,那么可能不会出现问题, 因为jdk向下兼容,如果jdk版本比我们业务版本高,可能就会出现编译无法运行的情况。

我遇到的问题:

        我的业务项目A是一个springboot项目,部署在服务器上,服务器的运行环境为jdk1.8,现在我需要在这个服务器上部署另外一个项目B,但是项目B使用的编译环境为17(但是项目B需要没有8版本以上的代码写法,如果你的项目B有8以上的写法,可能无法使用17编译成8的版本启动!)

        然后我在1.8的jdk运行环境下执行17编译的包,启动提示报错信息:

Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file

Exception in thread "main"

java.lang.UnsupportedClassVersionError:

com/nuctech/init/WebApplication has been compiled by

amore recent version of the Java Runtime

(class file version 61.0) this version of the Java Runtime

only recognizes class file versions up to 52

原因分析:

                报错大意为:无法使用1.8的环境(52对应jdk1.8)运行17(61对应的jdk17)的程序。

解决方案:

        一:设置编译的jdk环境为低版本环境:

        如果你使用Maven来编译代码, 在Maven的pom.xml文件中,添加配置:
<properties>    <maven.compiler.source>8</maven.compiler.source>    <maven.compiler.target>8</maven.compiler.target></properties>

        如果你使用Gradle来编译代码,在Gradle的build.gradle文件中,配置:
tasks.withType(JavaCompile) {    sourceCompatibility = '8'    targetCompatibility = '8'}

二:设置运行的jdk环境为高版本环境

        安装jdk17,修改环境变量为17的环境变量,这样既可以向下兼容项目A 又可以支持项目B,但是可能因为jdk环境不一样带来其它问题, 这个大家只能自己根据项目实际情况去测试

        三:使用docker容器, 容器内部指定每个项目的jdk版本,如在项目A指定jdk8 在项目B的容器指定jdk17

参考资料

                jdk17编译出兼容jdk8的代码
                


 

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-03-30/150887.html,文章来源:网络cs,作者:康由,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论