使用Launch4j将JavaFX程序(.Jar)转为Windows应用(.exe)(JDK11)遇问题
问题:Launch4j打包JavaFX程序为Windows exe时的运行错误
初始错误
尝试用Launch4j将JavaFX程序(MC_Clearing.jar)转换为Windows应用(.exe)时,出现以下错误:
Error: JavaFX runtime components are missing, and are required to run this application
当前通过Git-bash执行run.sh脚本可正常运行程序,脚本内容:
java --module-path "C:\Users\test\Documents\JavaFX\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml -jar MC_Clearing.jar
项目由IntelliJ IDEA创建,使用GluonHQ的JavaFX,无法将缺失的模块打包进Jar以生成可正常运行的exe。
更新:修改Main类后出现新错误
按照指示修改了Main类,代码如下:
public class Main { public static class Window extends Application { @Override public void start(Stage stage) throws IOException { GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); int width = gd.getDisplayMode().getWidth(); int height = gd.getDisplayMode().getHeight(); FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource("view.fxml")); Scene scene = new Scene(fxmlLoader.load()); stage.setScene(scene); stage.setMaximized(true); stage.show(); } } public static void main(String[] args) { Application.launch(Window.class, args); } }
module-info.java内容:
module MC_Clearing { requires javafx.graphics; requires javafx.controls; requires javafx.media; requires javafx.base; requires javafx.web; requires javafx.swing; requires javafx.fxml; opens com.data.t140.mc_clearing; }
修改后运行exe出现新错误:
Graphics Device initialization failed for : d3d, sw Error initializing QuantumRenderer: no suitable pipeline found java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280) at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222) at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158) at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658) at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124) ... 1 more Exception in thread "main" java.lang.RuntimeException: No toolkit found at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267) at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158) at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658) at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:834)
内容的提问来源于stack exchange,提问作者Edisson Gabriel López
相关产品推荐
相关产品推荐

