2026/1/10 11:11:47
网站建设
项目流程
潍坊网站建设选聚搜网络,网页开发,建设企业网站管理的重要性,软件工程师证书报考条件我日常工作主要使用Java进行开发#xff0c;业余时间也热衷于技术研究#xff0c;喜欢用Java的GUI库Swing开发一些实用的小工具。但是用Swing开发软件相比C/C的一个很大的劣势就是#xff0c;Java打包出来的文件不能直接运行#xff0c;需要使用JRE#xff08;Java runtim…我日常工作主要使用Java进行开发业余时间也热衷于技术研究喜欢用Java的GUI库Swing开发一些实用的小工具。但是用Swing开发软件相比C/C的一个很大的劣势就是Java打包出来的文件不能直接运行需要使用JREJava runtime environment才能运行如果使用软件的人没有JRE也不能运行软件所以基本上没有人会考虑使用Java来开发桌面应用。当前Java程序打包分发的几种方案使用当下最火的GraalVM将Jar包编译成二进制可执行文件。使用JLink打包将jar包编译成二进制可执行文件。使用Exe4J生成启动器然后使用压缩软件制作自解压的压缩包。编写批处理然后再用压缩软件制作自解压的压缩包。仅分发Jar包让使用者安装JRE然后使用命令启动Jar包。以上方案都有不同的优缺点技术方案优点缺点GraalVM性能提升减少资源损耗安全性高构建耗时调试困难不好支持反射Jlink二进制文件比携带环境更轻量级构建复杂调试困难体积大Exe4J降低使用门槛有更好的体验便于调试体积大需要JRE运行1不适合做小工具批处理降低使用门槛配置灵活易于更新便于调试体积大需要JRE运行不适合做小工具仅Jar包分发文件小容易更新没有JRE的电脑上不能运行需要命令启动使用门槛高体验不好以上方案中二进制文件分发会调试困难jar包形式分发会影响使用体验现在我综合上边的几种方案用Winform制作一个打包工具用以将Java程序打包成二进制可执行文件软件界面如下软件使用如下现有一个Swing程序如下pom.xml文件?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdorg.helloswing/groupId artifactIdHelloSwing/artifactId version1.0-SNAPSHOT/version properties maven.compiler.source17/maven.compiler.source maven.compiler.target17/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding /properties dependencies !-- https://mvnrepository.com/artifact/com.formdev/flatlaf -- dependency groupIdcom.formdev/groupId artifactIdflatlaf/artifactId version3.5.1/version /dependency /dependencies build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-assembly-plugin/artifactId version3.7.1/version configuration !-- 获取所有项目依赖项 -- descriptorRefs descriptorRefjar-with-dependencies/descriptorRef /descriptorRefs !-- 去除jar-with-dependencies后缀 -- appendAssemblyIdfalse/appendAssemblyId !-- 指定启动类 -- archive manifest mainClassorg.hellloswing.HelloSwing/mainClass /manifest /archive /configuration executions execution idmake-assembly/id !-- 绑定到包装阶段 -- phasepackage/phase goals goalsingle/goal /goals /execution /executions /plugin /plugins /build /projectHelloSwing.java文件package org.hellloswing; import com.formdev.flatlaf.FlatDarkLaf; import com.formdev.flatlaf.FlatLightLaf; import javax.swing.*; import java.awt.*; publicclass HelloSwing { public static void main(String[] args) throws UnsupportedLookAndFeelException { // 初始化皮肤 FlatLightLaf.install(); UIManager.setLookAndFeel( new FlatDarkLaf()); // 初始化窗口 JFrame jFrame new JFrame(Hello Swing); // 设置大小 jFrame.setSize(500, 500); // 关闭窗口后退出 jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置居中 jFrame.setLocationRelativeTo(null); // 设置元素 JPanel jPanel new JPanel(new BorderLayout()); jPanel.add(new JLabel(Hello Swing, JLabel.CENTER), BorderLayout.CENTER); jFrame.getContentPane().add(jPanel); // 显示窗口 jFrame.setVisible(true); } }将其打包成胖JAR后导出精简JRE然后使用打包工具打包将JAR文件于JRE打包成exe文件。之后就可以双击运行了。特此做个记录。