【发布时间】:2023-02-10 11:05:18
【问题描述】:
我最近将我的项目升级到spring-boot 2.7.0 版。升级后,当我运行我的 maven 配置文件的 jar 时,它会给我一个 invocationTargetException:
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
我注意到我构建的 jar 现在包含 BOOT-INF/classes 目录中所有 org/springframework/boot/loader/ 库的副本。这是我通过运行 jar tvf jarfile 查看 jar 文件时看到的:
0 Wed Jun 29 20:06:28 PDT 2022 META-INF/
492 Wed Jun 29 20:06:28 PDT 2022 META-INF/MANIFEST.MF
0 Fri Feb 01 00:00:00 PST 1980 org/
0 Fri Feb 01 00:00:00 PST 1980 org/springframework/
0 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/
0 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/
5871 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/ClassPathIndexFile.class
7675 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/ExecutableArchiveLauncher.class
2551 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/JarLauncher.class
1483 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/LaunchedURLClassLoader$DefinePackageCallType.class
1535 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/LaunchedURLClassLoader$UseFastConnectionExceptionsEnumeration.class
11154 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/LaunchedURLClassLoader.class
5932 Fri Feb 01 00:00:00 PST 1980 org/springframework/boot/loader/Launcher.class
...
0 Wed Jun 29 20:06:28 PDT 2022 BOOT-INF/
0 Wed Jun 29 20:06:28 PDT 2022 BOOT-INF/classes/
0 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/
0 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/
0 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/
0 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/
5871 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/ClassPathIndexFile.class
7675 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/ExecutableArchiveLauncher.class
2551 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/JarLauncher.class
1483 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/LaunchedURLClassLoader$DefinePackageCallType.class
1535 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/LaunchedURLClassLoader$UseFastConnectionExceptionsEnumeration.class
11154 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/LaunchedURLClassLoader.class
5932 Fri Feb 01 00:00:00 PST 1980 BOOT-INF/classes/org/springframework/boot/loader/Launcher.class
在我的pom.xml 中,我有一个针对特定配置文件的重新打包步骤:
<profile>
<id>profileName</id>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<configuration>
<classifier>someName</classifier>
</configuration>
</execution>
</executions>
</plugin>
</profile>
此配置文件为我提供了损坏的罐子。在春季升级之前,它甚至在重新打包步骤中也能正常工作,所以一定发生了一些变化。如何避免我的 jar 中出现重复的 spring boot 库?
【问题讨论】:
-
您正在使用配置文件,您是否通过任何更改也配置了 maven jar 插件?或者常规构建部分中的另一个
spring-boot-maven-plugin?简而言之,这里的信息似乎太少了,请添加您的完整构建文件。并尝试使用 Spring Boot 2.7.1(不久前发布)。
标签: java spring spring-boot maven jar