JavaFx打包
SpringBoot + JavaFx 实现
Spring启动类
@SpringBootApplication
public class BootStrapApplication implements CommandLineRunner {
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(BootStrapApplication.class, args);
ctx.close();
}
@Override
public void run(String... args) {
// start java fx
Application.launch(JavaFxApp.class, args);
}
}
javafxpackager
打包成jar
javafxpackager -createjar -appclass your.app.xxx -srcdir classes -outdir archive -out file Test.jar
打包成exe
javafxpackager -deploy -appclass your.app.xxx -native image -srcdir app -outdir deploy -outfile Test
说明
appclass 指定应用程序主类
srcdir 指定存放jar文件的目录
native image 指定输出的本地程序类型,image只生成一个启动器
用该方法打包maven构建的项目,依赖的很多jar包都不会被打包进来
javafx-maven-plugin
配置说明
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<!--指定打包出来的应用名-->
<appName>appName</appName>
<!--应用程序的供应商,在Bundles安装时候需要-->
<vendor>yui</vendor>
<!--入口类-->
<mainClass>your.app.MainClass</mainClass>
<!--JAVA启动参数-->
<runJavaParameter>
-Xms50m -Xmn1g -Xss228k -XX:+UseParallelGC -XX:ParallelGCThreads=20
</runJavaParameter>
<!--APP启动参数 For MavenPlugins jfx:run-->
<runAppParameter>--spring.profiles.active=prod --file.encoding=UTF-8
</runAppParameter>
<!--native启动参数 For MavenPlugins jfx:native-->
<launcherArguments>--spring.profiles.active=prod --file.encoding=UTF-8
</launcherArguments>
<!--默认目录${project.basedir}/src/main/deploy-->
<deployDir>${project.basedir}/src/main/deploy</deployDir>
</configuration>
</plugin>
命令说明
jfx:jar
代码打包成jar包,依赖打包到目录lib下
正常启动 (java - jar xxx.jar ),会报错缺少依赖文件
解决方案(个人看法,没找到解决方案)
将所有依赖加入启动参数,使用start.bat启动
将所有依赖和代码打成一个包 jar-with-all-dependencies.jar
jfx:native采用方案
jfx:build-native: 只重新构建native(target/jfx/native),需要已构建jar (target/jfx/app)
jfx:native: 重新构建jar和native
个人看法:流程是生成调用jar包的exe,运行exe启动程序。
如何修改程序图标?
图标所在目录: src/main/deploy/package/windows/your-app-name.ico (与deployDir相关)
jfx:run
com.zenjava:javafx-maven-plugin:8.8.3:run 运行调试
maven-assembly-plugin
生成jar包两种方式
打包项目依赖的所有jar生成单个jar包
生成jar包,复制所需的jar包到lib目录
第一种方式较好,第二种方式会出现 Caused by: java.lang.NoClassDefFoundError错误
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.app.xxx</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Last modified: 28 十一月 2023