在打包一个 Springboot 项目 (版本号如下XML配置)时遇到一个问题
在本地使用21版本运行正常,但是在使用Maven 构建时出现错误:Fatal error compiling: 错误: 不支持发行版本 21 -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project gaotie-api: Fatal error compiling: 错误: 不支持发行版本 21 -> [Help 1]
问题点到底出在哪呢?因为一个前提是我在本地能正常运行,但是就是在打包的时候提示 错误: 不支持发行版本 21 。但我一再检查了一下项目设置中的JDK版本、IDEA中的各项JDK版本设置,均是21。打包的时候加载的东西和我在本地运行时的差异?
带着这个问题,我尝试进行了一下版本切换,使用常用的稳定的JDK8版本来尝试,于是各个版本设置的地方都改成了JDK 1.8,但是打包时又开始报一个新的错误: 类文件具有错误的版本 61.0, 应为 52.0的解决方法。
好像有一点眉目了。其中提示的 52.0 即是对应 Java 8的类文件版本,而61.0即是 Java 17的类文件版本。从提示来看我的整个程序中有 JDK17 的版本的支持需要,因此使用 JDK8 编译不能成功,而这应该就是我使用 21版本JDK打包失败的地方,于是我下载了一个 17版本的JDK,开始进行打包。果然成功。
总结:项目出现不支持发行版本 21,首先可以使用JDK8来试试,看报错中提示类文件具有错误的版本的版本号,而这个版本应该就是项目能使用的最高JDK版本。附一下我此时用的依赖,以后有时间或再次有类似情况时以参考。
Springboot 项目本地正常开发完成后,打成 jar 包,放至服务器 docker 下运行出现报错:Could not find or load main class,提示很明显是未找到主类。Spring中的主类设置可以在 pom.xml中实现。配置如下:
除此之外,也可以直接在docker 容器启动的时候使用选项指定启动类。如下所示:
之后业务就能正常运行了,不过有一个要注意的地方,就是出现 Could not find or load main class 不一定是程序、配置中的问题,在docker容器技术启动脚本上也可能。如下方的容器启动脚本 sh -c java 这行缺少 -jar 就会导致这个错误提示,而且不好排查。
也看到有的人提到升级到springboot 3.2 这个版本之后,之前的分层打包启动后会报一下错误 Error: Could not find or load main class org.springframework.boot.loader.JarLauncher。和这个地方的报错是不一样的。
今天来下载镜像时就出现报错如下:
Error response from daemon: Get "https://index.docker.io/v1/search?q=KEY&n=25": dial tcp 10.21.15.10:443: connect: connection refused
只能改成阿里或者国内的源了,阿里源需要使用账号登录其平台从里面的镜像管理中复制每个人的域名地址,不过网上也有很多公开的源地址。如下所示:
1. 编辑 /etc/docker/daemon.json 添加镜像地址
但我在添加了很多源及个人阿里源之后发现依然报错:Error response from daemon: Get "https://index.docker.io": : connect: connection refused,但使用 docker info 查看它的源确实已经换过了的。
2. 编辑 vim /etc/default/docker
添加一行配置内容,如下非注释那行
但是依然不行。使用docker info 查看是已经更新了的。
3. 编辑 vim /etc/default/docker
这个文件/etc/sysconfig/docker 默认应该不存在,新增加了后添加了一行配置,用参数 --registry-mirror=镜像地址
这是在阿里云服务器上呢,可这些都不管用。后来发现我是使用 docker search 命令来看镜像是否能下载,然后再用了一下 pull 发现,镜像竟然能下载了,但是 search 命令就是不行!问了一下客服反馈: Docker Search 异常有可能使 加速地域配置异常。或者 docker官方限制了国内IP的访问 ,导致搜索超时。至少能下载镜像了,也算基本满足需求了,搜索以后就试试到网页上去搜。
针对镜像源地址,客服建议使用如下镜像:
到此这篇enoent no such file or 打包报错(no package file selected)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!{
"registry-mirrors": [
"https://docker..top",
"https://docker.1panel.live",
"https://hub.rat.dev",
"https://docker.m.daocloud.io",
"https://do.nark.eu.org",
"https://dockerpull.com",
"https://dockerproxy.cn",
"https://docker.awsl9527.cn"
]
}
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/42701.html