我有一个带有Spring Boot的多层Maven项目。
ParentProject |_ Project1 |_pom.xml |_ LibraryProject |_pom.xml |_ Project2 |_pom.xml
对于ParentProject,父级的定义如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath></relativePath>
</parent>
对于Project1,LibraryProject和Project2:
<parent>
<groupId>ParentProject</groupId>
<artifactId>ParentProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
Project1和Project2取决于LibraryProject中的类。当我从Eclipse执行时,Project1和Project2都找到了它们的所有类以及LibraryProject中的所有类。当我使用
创建一个Project1.jar时mvn clean install package
然后运行它,我在LibraryProject中的类上得到ClassNotFoundExceptions。 LibraryProject是Project1的依赖项,并在Project1之前构建。
ParentProject使用spring-boot-parent作为其父项。它按以下顺序构建:
1) LibraryProject 2) Project1 3) Project2
我带来了maven-compiler-plugin,maven-jar-plugin,maven-remote-resources-plugin。
我没主意。它可以在Eclipse中编译,而Maven可以构建它。但是运行它会创建异常。
谢谢大家。
答案 0 :(得分:0)
这是由ClassLoader引起的,使用java -jar
运行的SpringBoot具有自己的ClassLoader。它将从BOOT-INF / classes和BOOT-INF / lib加载Class,但是Eclipse会将所有依赖项添加到classpath。因此Eclipse可以找到Class。您可以检出pom.xml。