springboot多模块打包错误:Process terminated;Unable to find main class
这种错误有许多可能的错误之处,我的是因为:
我的项目结构目录(有三级):
|---父项目
|---子模块
|---子子模块
当我在创建子模块下的某个子子模块时,第一次创建就照常右击子模块,选择新建模块,写好新建的子子模块的名字后点击确定,发现刚创建的这个子子模块和子模块同目录(也就是它也在父项目下,和子模块同一等级)就像这样:
|---父项目
|---子模块
|---子模块
这肯定不行啊,这哪是创建子子模块,很明显我这是又创建了一个子模块,事与愿违,于是我就删了这个刚创建失败的模块,想重新在子模块下创建一个子子模块。于是就再右击子模块选择新建模块,可创建完后发现还是和子模块在同一层级下:
|---父项目
|---子模块
|---子模块
后来经过询问后发现:
原来是在新建一个model时,Location写的不对,没有分层(当时创建的时候不知道为什么不是这种分级路径,可能是idea没反应过来吧):
看到了吗,parent是父项目、service是子模块、“子子门模块”就是我们要创建第三级模块也就是子子模块。
按照这种层级创建层能成功创建出三级模块:
|---父项目
|---子模块
|---子子模块
但是
当我运行测试代码的时候项目打包出错:(由于报的错没有详细记录) 其中有这个提示:
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:...
repackage failed: Unable to find main
class
控制台就两个红色单词:
Process terminated;
怎么解决?
还记得之前创建的那个子子目录吗?
要知道,每次创建模块,它都会在他的上一级的pom文件中自动生成这个东西,来标识该模块:
<modules>
<module>service</module>
<module>子子模块</module>
</modules>
由于我创建失败的子子模块不在子模块下,而是在父项目下,与子模块同级,所以它会在父项目的pom文件中出现上面的那个标识:<module>子子模块</module>
我们把这个模块去掉就行了,让父项目下只有子模块的module标识就行了:
<modules>
<module>service</module>
</modules>
不是吧!!!
上面的东西改好后,我运行test测试里面的程序还是报错:
spring-boot-maven-plugin:2.5.3:repackage failed: Unable to find main class
没办法那就接着造呗。
去网上搜了许多这种错误的解决方案,终于找到了:
该博客地址:https://www.dandelioncloud.cn/article/details/1370378236395646978
这个博客的解决方式也很简单:
解决方式:
不使用springboot的maven插件,改为使用普通的maven插件,使用springboot的maven插件意味着每个模块都需要有启动类,而使用普通的插件则不需要。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
我把上面的一段配置替换掉之前父项目中的<build>配置后,再次打包运行果然好了。
很显然,当我们创建多个模块的时候,就会容易遇到这种错误,不过只要我们多多总结,多多思考做好笔记,就会....
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示