專案中使用到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-
發佈留言