SpringBoot 项目打jar包出现的问题:
问题一:子项目进行clean后package,出现程序包xxx不存在错误,但实际上对应包已经成功导入了
**解决方案1:**打开idea的Settings, 进入Build Execution Deployment——>Build Tools——>Maven——>Runner,将Delegate IDE勾上就可以了。(将idea的编译和运行的操作委托给maven)。
**解决方案2:**删除 .idea 文件夹,清除缓存重启打开这个项目
**解决方案3:**选中对应项目,mavne->Reimport。(基本无用,运气好可能有用)
问题二:打包完成后运行jar包,dos窗口弹出没有主清单属性
**解决方案1:**需要将jar解压,修改MAIN文件
**解决方案2:**修改pom.xml文件,使用Maven打包,在pom.xml文件添加如下依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
重新构建maven,直接使用maven打包即可(无需指定mainclass)
问题三:Error injecting: org.springframework.boot.maven.RepackageMojo
**解决方案1:**这个问题可能是打包器版本问题,使用最新版本打包器,支持Java Runtime (class file version 61.0)版本,对低版本java8(52.0)未做适配。在maven中添加指定低版本的打包插件。我这里选择的是2.6.2
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.2</version>
</plugin>
**解决方案2:**将java项目升级为高版本,Java17。
**问题四:**java项目才去分模块搭建,就会出现多个启动类,可以通过idea进行Artifacts打包,分别将不同模块的项目打成jar包。也可以通过配置maven插件。
解决方案:
- 在父模块maven中添加打包插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
</plugin>
<!-- 此插件必须放在父 POM 中 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<executions>
<!--
执行本插件的方法为,在主目录下执行如下命令:
mvn package assembly:single
对于 IntelliJ IDEA,生成的 JAR 包位于每个模块下的文件夹 target
-->
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<!-- 此处 IntelliJ IDEA 可能会报红,这是正常现象 -->
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<!-- 配置程序运行入口所在的类 -->
<mainClass>com.mest.BlogAdminApplication</mainClass>
</manifest>
<manifest>
<!-- 配置程序运行入口所在的类 -->
<mainClass>com.mest.MestBlogApplication</mainClass>
</manifest>
</archive>
<!-- 设置 JAR 包输出目录 -->
<outputDirectory>${project.build.directory}/#maven-assembly-plugin</outputDirectory>
<!-- 设置打包后的 JAR 包的目录结构为默认 -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
- 然后在子模块的maven中添加:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.2</version> //指定版本打包插件
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>${project.artifactId}</finalName>
</build>
- 首先clean清除先前的jar包,再package打包。
关闭idea启动类,运行jar包成功启动,暴露端口: