JAVAFX打包部署真正能用的办法(jdk21,javafx23)IntelliJ IDEA

      我之前创建了javafx项目,想打包试试。一试,全是坑,所以记录下来,为有缘人节约时间。直接构建工件是错误的,别尝试了,找不在JDK的。我也花了一天多的时间尝试了网上各种大神的办法,就没找到一个是正确的。最后自己找到了解决办法,并分享给大家。

      我们用Maven进行打包

1、检查javafx的版本,如果是23以下的版本,你无法使用jdk21。坑的是他运行时可以,打包才说不行。

2、更改pom.xml的build部分为下面的代码,不要问我为什么要这样改,我问谁去?

<build>
    <plugins>

      <!-- Maven Compiler Plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
        <configuration>
          <source>21</source>
          <target>21</target>
        </configuration>
      </plugin>

      <!-- JavaFX Maven Plugin -->
      <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.8</version>
        <configuration>
          <mainClass>com.example.demo.HelloApplication</mainClass>
        </configuration>
      </plugin>

      <!-- Maven Shade Plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.4</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                  </excludes>
                </filter>
              </filters>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.example.demo.HelloApplication</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

3、用cmd导航到项目所在的文件夹,运行:mvn clean package,如图

4、进入到target文件夹,运行:java -jar demo-1.0-SNAPSHOT.jar,提示:“错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序”。恭喜你,打包成功了。

5、复制javafx的sdk过来(里面应该有bin,legal,lib等东西,全部复制到target),现在你的target应该类似于下图:

6、我们新建test.bat,内容为:

@echo off
REM 获取当前目录
set CURRENT_DIR=%~dp0

REM 运行命令
java -Xmx12G --module-path "%CURRENT_DIR%\lib" --add-modules javafx.controls,javafx.fxml -jar demo-1.0-SNAPSHOT.jar

REM 立即关闭命令行窗口,不等待java程序结束
exit

7、需要注意的是我用-Xmx12G,给了这个项目12G的运行内存限制。这个值是要按照运行电脑的配置进行修改的。这个设置也非常重要,它能避免运行内存太多出现的问题。

8:双击test.bat,如图:

9、打包成功。在windows上你可以把这个文件夹复制到任何电脑,直接就能运行(运行环境JDK21是需要的)。

10、如果是在linux上用,你按bat的思路,建一个sh文件即可。记得把javafx的sdk换成linux的。macos同理。

11、现在是2024年6月17号,这篇博客应该是目前为止,唯一一篇说清楚了用jdk21和javafx23打包的文章。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值