当前位置:   article > 正文

IDEA 打包 exe 程序 与 javafxpackager 打包 exe 程序

javafxpackager

目录

本文导读

javafxpackager

简 述

jar 转 exe

运行测试

注意事项

IDEA 自动生成

项目代码

打包 exe

运行测试

资源文件位置


本文导读

1、很多时候把应用打包成可执行Jar文件,还是美中不足,因为整个应用被生成了一个 jar 文件

2、可以把Jar再转成exe应用,本文讲解两种方式

javafxpackager

简 述

1、从 JDK1.7u6 开始 Java FX 内置在Java SE中,同时为Javafx 提供了打包工具-javafxpackager.exe,如下所示。

2、这是推荐方式

3、此种方式适用于任何可执行Jar应用,包括Java SE 与Java FX,也无论是IDEA生成的,还是Eclipse、MyEclipse生成的,或是其它方式生成的

jar 转 exe

1、以《IDEA 打包 可执行 Jar 程序》中 "Java SE应用"打包生成后的"china.jar"为例继续进行转换为exe应用

2、如下所示,现在china.jar可以放到任何安装了Java 运行环境的电脑上运行了,现在开始将它转为exe应用。

3、新建"jar"、"exe"两个目录,名字自己取,建议不含中文和空格就行,将"china.jar"放入到"jar"目录中

使用命令行:javafxpackager -deploy -native image -appclass com.lct.main.MainApp -srcdir E:/wmx/logs/jar -outdir E:/wmx/logs/exe -outfile chinaApp -name china

参数详解,可以直接在cmd输入"javafxpackager",然后回车,可以看到所有参数信息

-deploy:打包程序根据其他参数生成 jnlp 和 html文件

-native:生成自包含的应用程序包 (如果可能), 如果指定了类型, 则只创建此类型的包,所支持类型的列表包括: installer, image, exe, msi, dmg, rpm 和 deb。

-appclass:要执行的应用程序类的限定名称,即程序入口类的全路径。

-srcdir:待打包文件的基目录。

-outdir:要将输出文件生成到的目录的名称。

 -outfile:生成的文件的名称 (不带扩展名)。

这样生成好的文件就打包到l"exe"目录中了,下面的"china.jar"其实就是咋们打包的源文件,也就是"jar"目录下的可执行jar文件,需要的exe应用在"bundles"目录中

需要的就是这个"china"目录,转换好的exe应用就在里面,可以将"china"放到任何安装了Java运行环境的电脑上运行

运行测试

注意事项

1、使用“javafxpackager”方式生成的exe程序包,虽然可以放到任意安装了Java环境的电脑上运行,但是exe放置的路径不能含有中文,否则运行失败含有空格没有关系

2、Java程序是在Java JVM中运行中的,所以跨平台,无论是64位还是32位操作系统都没有问题,而 Java JDK是区分系统的,而且还有64位于32位之分,不同的系统和位数就得下载安装不同的版本型号的Java JDK。

如果使用64位的Java JDK将Jar编译成exe,则此exe程序默认只能在64位Windows系统中运行;如果想要在32位windows系统中运行,则可以在32位的电脑系统上安装32位的Java JDK,然后重新编译即可。

IDEA 自动生成

1、IDEA可以将Java Web项目直接转成war包,可以将Java SE 直接转成 Jar包,同理 IDEA 可以直接将Java FX转成exe应用

2、以《IDEA 打包 可执行 Jar 程序》中 "Java FX应用"继续进行讲解说明

项目代码

  1. import org.apache.commons.lang3.StringUtils;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.ResourceBundle;
  8. /**
  9. * Created by Administrator on 2018/6/29 0029.
  10. * 日志工具类
  11. */
  12. public class LogWmxUtils {
  13. private static final String LOG_DIR_PATH;
  14. static {
  15. ResourceBundle resourceBundle = ResourceBundle.getBundle("system");
  16. LOG_DIR_PATH = resourceBundle.getString("logDirPath");
  17. }
  18. /**
  19. * 写入日志
  20. *
  21. * @param message
  22. */
  23. public static final void writeLine(String message) {
  24. try {
  25. if (StringUtils.isNotBlank(message)) {
  26. File logDir = new File(LOG_DIR_PATH);
  27. if (!logDir.exists()) {
  28. logDir.mkdirs();
  29. }
  30. SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
  31. SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  32. String logName = simpleDateFormat1.format(new Date());
  33. String messageHead = simpleDateFormat2.format(new Date());
  34. File logFile = new File(logDir, logName + ".log");
  35. FileWriter fileWriter = new FileWriter(logFile, true);
  36. fileWriter.write(messageHead + ":" + message + "\r\n");
  37. fileWriter.flush();
  38. fileWriter.close();
  39. }
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }
  1. import javafx.application.Application;
  2. import javafx.fxml.FXMLLoader;
  3. import javafx.scene.Parent;
  4. import javafx.scene.Scene;
  5. import javafx.stage.Stage;
  6. import utils.LogWmxUtils;
  7. public class Main extends Application {
  8. @Override
  9. public void start(Stage primaryStage) throws Exception {
  10. Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
  11. primaryStage.setTitle("2018 China");
  12. primaryStage.setScene(new Scene(root, 300, 275));
  13. primaryStage.show();
  14. }
  15. public static void main(String[] args) {
  16. LogWmxUtils.writeLine("Application startup");
  17. launch(args);
  18. }
  19. }

打包 exe

经过了上面的javafxpackager打包之后,这里就更加简单了

这和使用javafxpackager打包基本一样,同样IDEA会先将应用打包成可执行Jar文件,如下所示的"USA.jar",在通过它来进行转换,真正需要的在"bundles"目录中

下面的"USA"目录才是真正需要的东西,可以拷贝到任何安装了Java环境的电脑上运行

运行测试

资源文件位置

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/550539
推荐阅读
相关标签
  

闽ICP备14008679号