【发布时间】:2022-08-10 03:08:09
【问题描述】:
我正在使用以下方法开发一个简单的 JavaFX 项目:视窗,VSCode/PowerShell,Java SDK 17.0.2,JavaFX SDK 17.0.2.
这是我的项目结构:
bin/
snaptools/
Controller.class
Main.class
SnapTransceiver.class
icon.png
snaptools.fxml
lib/
openjfx-17.0.2_windows-x64_bin-sdk/
...
jSerialComm-2.9.1.jar
snaprotocol-1.0.0.jar
src/
snaptools/
Controller.java
Main.java
SnapTransceiver.java
icon.png
snaptools.fxml
我可以使用以下命令行编译项目:
javac -encoding UTF-8 -d bin --class-path \"lib/jSerialComm-2.9.1.jar;lib/snaprotocol-1.0.0.jar\" --module-path lib/openjfx-17.0.2_windows-x64_bin-sdk/javafx-sdk-17.0.2/lib --add-modules javafx.controls,javafx.fxml src/snaptools/*.java
我可以使用以下命令行运行程序:
java --class-path \"bin;lib/jSerialComm-2.9.1.jar;lib/snaprotocol-1.0.0.jar\" --module-path lib/openjfx-17.0.2_windows-x64_bin-sdk/javafx-sdk-17.0.2/lib --add-modules javafx.controls,javafx.fxml snaptools.Main
我的项目差不多完成了。我只需要打包它。不幸的是,似乎每个人都在使用 Maven/Gradle 和特定于 IDE 的技巧(Eclipse、NetBeans、IntelliJ)。我不想依赖这些方法。
我想要的是:
- 没有安装过程的可执行 .exe 文件(一个只执行和最好什么都不提取)。
- 不使用 Maven/Gradle(我可能会将所有内容都放在一个 makefile 中)。
- 无需使用特定的 IDE(我使用 VSCode,但我也不想依赖它)。
- 可以通过常规终端上的命令行来完成。
- 包含它需要执行的一切(用户不需要安装任何东西)。
可能吗?顺便说一句,我也一直在搞乱 Launch4j、jpackage 和 jlink,但无法弄清楚。
-
Maven/Gradle是Java 世界的“makefile”。这两个工具都独立于 IDE 运行。
-
使用warp 从jlink image 创建您的exe。 How to create a standalone .exe in Java (that runs without an installer and a JRE) 有一个演示。如果您不想使用 maven,请用您想要的任何内容替换该答案的 maven 部分。
-
我注意到您在类路径上使用了一些非模块化 jar,它们不适用于 jlink。如果您愿意,您可以研究解决该问题的方法(这些方法非常难看,我没有具体的建议)。
-
我想知道帮助那些显然走在错误轨道上的人们取得进步是否真的有意义。他们只会有更长的路要走。
-
@BasilBourque 是的,我知道,我只是想坚持使用旧品牌,因为我是一名 C 程序员......
标签: java javafx deployment command-line