專案中使用到MQTT的功能,在開發環境中都是正常的,但一打包成EXE執行檔後,就無法執行了,找了一大圈才發現到是jre的問題。
javapackager打包時,為了減少檔案大小,所以環境的部分會使用減肥版的jre,但是MQTT會使用到jdk本身的功能,於是就無法正常載入了。
找了一大圈似乎沒看到能用jre解決的辦法,於是只能用暴力解法了,將JDK環境直接複製到專案資料夾底下,並且在pom.xml
中直接指定打包要用的jar路徑:
<plugin> <groupId>io.github.fvarrui</groupId> <artifactId>javapackager</artifactId> <version>1.7.6</version> <executions> <execution> <phase>package</phase> <goals> <goal>package</goal> </goals> <configuration> <mainClass>com.aiserver.Main</mainClass> <bundleJre>true</bundleJre> <!--在這邊指定--> <jrePath>${project.basedir}/liberica-full-17.0.14</jrePath> <generateInstaller>false</generateInstaller> <administratorRequired>false</administratorRequired> <platform>windows</platform> </configuration> </execution> </executions> </plugin>
重新打包即可正常執行,缺點就是成是很肥,不過對現在的電腦來說影響不大吧(笑。
-END-
發佈留言