前提是在開發工具中能正常運行,maven打包后無法運行。
打包后,進入打包文件路徑
在dos下輸出
java -version
顯示jdk版本后,再
java -jar xxxx.jar
xxxx為你打包后的jar名稱
解決辦法有
1 在maven的pom.xml文件中,增加以下依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
2 如果是eclipse中 還要指定jdk版本, IDEA開發工具中不用指定jdk版本,但是建議 代碼編譯時的JDK版本與運行時保持版本一致。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
3 檢查是否有maven插件依賴,和檢查 開發工具中的maven是否配置正確。
在pom.xml中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
4 檢查打包后,檢查 是否將配置文件和依賴的jar文件 同時打包。
Idea 中將 包含 配置文件的文件夾
右鍵文件 Mark Directory as --> Test Resources Root
eclipse 除了將 包含配置文件的文件夾 Build Path ---> Use as Source Folder 之外
在pom.xml中,增加以下配置,確保將配置文件也同時打包。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java/resources</directory>
<includes>
<!--包含文件夾以及子文件夾下所有資源-->
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
如果以上問題都排查無誤后,在成功打包后,仍然無法正常運行
如果出現以下異常
Exception in thread "main" java.lang.IllegalAccessException: Class org.springframework.boot.loader.MainMethodRunner
can not access a member of class 你的springboot主函數入口類 with modifiers "public static"
那么 說明 你的主函數入口類 沒有 public 修飾
我的問題就是 主函數入口類 的修飾符 沒加public
在 開發工具中 可以正常運行, 打包后 不能正常運行。
做個記錄,分享給有緣人。