对宇连通IM之PC客户端系统进行GraalVm进行打包。
1,安装Visual studio2022版,安装C++桌面开发组件,如下图:
![]()
2,安装graalvm-jdk-21.0.7+8.1,并配置GRAAL_HOME和JAVA_HOME的值。
3,对项目增加打包配置,使用gluonfx打包插件,配置如下:
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<options>
<option>--add-opens</option>
<option>java.base/java.lang.reflect=com.jfoenix</option>
<option>--add-opens</option>
<option>javafx.graphics/javafx.scene=org.controlsfx.controls</option>
<option>-Dfile.encoding=UTF-8</option>
</options>
</configuration>
</executions>
</plugin>
<plugin>
<groupId>com.gluonhq</groupId>
<artifactId>gluonfx-maven-plugin</artifactId>
<version>1.0.27-SNAPSHOT</version>
<configuration>
<target>host</target>
<mainClass>${mainClassName}</mainClass>
<releaseConfiguration>
<skipSigning>true</skipSigning>
<description>appDescription</description>
<vendor>vendor</vendor>
</releaseConfiguration>
<resourcesList>
<list>.*\\.properties$</list>
</resourcesList>
<bundlesList>
<list>web</list>
<list>media</list>
</bundlesList>
<runtimeArgs>
<arg>-Dfile.encoding=UTF-8</arg>
</runtimeArgs>
<nativeImageArgs>
<arg>-H:+AddAllCharsets</arg>
<arg>-H:IncludeResources=".*$"</arg>
<arg>-H:IncludeResources="ldh/im/fxbase/.*$"</arg>
<arg>--allow-incomplete-classpath</arg>
<arg>--no-fallback</arg>
<arg>-H:+ReportUnsupportedElementsAtRuntime</arg>
<arg>-H:ClassInitialization=org.slf4j:build_time</arg>
<arg>--initialize-at-run-time=java.beans</arg>
<arg>--initialize-at-build-time=java.beans.Introspector$1</arg>
<arg>--initialize-at-build-time=javafx.beans</arg>
<arg>--initialize-at-build-time=com.sun.beans</arg>
<arg>--initialize-at-build-time=org.slf4j</arg>
<arg> --initialize-at-build-time=java.beans.Introspector</arg>
<arg> --initialize-at-build-time=org.slf4j.simple.SimpleLogger</arg>
<arg> --initialize-at-build-time=com.sun.beans.introspect.ClassInfo</arg>
<arg> --initialize-at-build-time=com.sun.beans.introspect.MethodInfo</arg>
<arg> --initialize-at-build-time=com.sun.beans.TypeResolver</arg>
<arg> --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger</arg>
<arg> --initialize-at-run-time=ldh.im.fxgui.service.MessageReadService</arg>
<arg>--initialize-at-build-time=ldh.im.dto.enums.MessageType</arg>
<arg> --initialize-at-build-time=ldh.im.fxgui</arg>
<arg>--add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.jdk=ALL-UNNAMED</arg>
<arg>-H:-CheckToolchain</arg>
</nativeImageArgs>
<linkerArgs>
<arg>management_ext.lib</arg>
<arg>psapi.lib</arg>
</linkerArgs>
</configuration>
</plugin>
4,打包命令
mvn gluonfx:run 此命令运行项目
mvn gluonfx:runagent 生成native-image需要配置文件: 反射,资源,JNI,代理等配置文件
mvn gluonfx:build 进行打包,生成exe文件
mvn gluonfx:nativerun 运行exe,能够输出日志
按照上面的步骤操作,就能够顺利打包成功。
运行生成的exe,项目启动速度明显提高了,内存占用有大幅度降低,IM系统运行的内存占用通常会控制在300M以内。