现象:直接在idea里点运行是没问题的,但是打成可执行jar包在命令行里用java -jar来执行就会报错ClassNotFoundException。
看了下具体的找不到的类,发现是本地另一个common工程里的一个类。但是这个工程也打成了jar包在本地maven仓库啊,按理说应该是没问题的。后来百度了下springboot jar包的相关知识,发现jar包分两种,一种是可执行jar包,一种是不可执行jar包,只有不可执行jar包才能被引用其中的类。也就是说这里的common工程很可能也打成了可执行jar包,这样引用是找不到其中的类的。
找到问题所在后就简单了,修改common工程里的pom文件,注释掉
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
加上如下设置即可。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>