![](/img/trans.png)
[英]Transaction is not committed when spring boot application is run from java -jar
[英]ClassNotFoundException when I run from a Spring Boot Jar, but not through Eclipse
我有一個帶有 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 可以構建它。 但是運行它會產生異常。
謝謝大家。
這是ClassLoader造成的,SpringBoot用java -jar
運行有它自己的ClassLoader。它會從BOOT-INF/classes和BOOT-INF/lib加載Class,但是Eclipse會將所有依賴添加到classpath中。 這樣 Eclipse 就可以找到 Class。 你可以檢出你的 pom.xml。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.