maven打包jar出现的问题

博主在修改已打包项目的pom.xml未改动的情况下,遭遇了`找不到主类`和`ClassNotFound`问题。通过排查,发现新打包的jar包缺少编译后的class文件,最终解决过程揭示了`Maven重新导入`导致的配置丢失。
摘要由CSDN通过智能技术生成

先说一下背景,之前已经打包成功的项目,做了一点修改之后,重新打包。没有对pom做任何修改!!!任何都没有!!!
然后出现了以下若干问题,一一排除。

1、repackage failed: Unable to find main class

首先,第一个问题说是没有找到主类,这个时候,我还以为只是简单的问题(因为之前遇到过这个问题),在pom里加上以下配置。

<configuration>
<mainClass>project.demo.DemoApplication</mainClass>
</configuration>

OK,解决问题,打包成功。
就在我窃窃自喜的时候,并且夸了自己一波的时候,我执行了

java -jar xxx.jar

就出现了下面的问题

2、Exception in thread “main” java.lang.ClassNotFoundException

Exception in thread "main" java.lang.ClassNotFoundException: project.demo.DemoApplication
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
	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:88)

于是,我就开始跑偏了,开始各种搜索。

有说是因为配置的JDK版本不一致的,我去查看了,确实不一致,修改过了。

也有说是因为IDEA的Structure中配置不对的,我查看了,没问题,不过还是尝试了在Artifacts中添加了jar包的配置(如果使用maven进行打包,应该是不需要这步吧)。

尝试了若干操作,都没成功。

于是我把jar解压缩,想要看一下到底他跟之前可以成功运行的jar包有什么区别,于是发现了最终的问题

3、打包好的jar包中没有源码编译后的class文件!!!

请添加图片描述
之前打包好之后是没有project这个目录的,只有其他四个,也就是所有的资源文件和配置文件都在,就是没有源码编译后的class文件。

于是我又开始了搜索,配置,尝试。没有用,都没有用。
后来我发现一个很奇怪的现象。
就是每次重新加载pom文件之后,都会丢失源码配置,到时程序没有办法运行(这个情况在一开始就有,但是我没有注意)。

打开Structure的Module,每次修改配置之后,在窗口最下方都会有一个下面这样的提示(现在还是有)。

module 'project1' is imported from Maven. Any changes made in its configuration may be lost after reimporting.

之后我就去搜索了maven中确定源码路径的配置,也就是下面这个。

 <sourceDirectory>src/main</sourceDirectory>

很奇怪的是,这样写是标红报错的,以致于我最开始写完以为是错的,不停的修改。

后来发现,其实无所谓,因为再进行mvn clean package之后,打包完成的jar包里面该有的都有了,在终端运行也没有问题了。

心态炸裂!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值