简单 Java 11 JavaFXprogram,从 JAR 文件 (Windows) 运行 时出错
Simple Java 11 JavaFXprogram, Error when run from JAR file (Windows)
我有一个测试 JavaFX 程序,在 Eclipse 中 运行 没问题。 - 我必须添加一个包含以下内容的模块信息文件(模块-info.java):
module moduletest {
requires javafx.controls;
exports com.javafx.test.MenuTest;
}
Java class:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class MenuTest extends Application {
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(new VBox(), 300, 250);
Circle circle1 = new Circle(-20,0,200);
circle1.setFill(Color.CADETBLUE);
((VBox) scene.getRoot()).getChildren().addAll(circle1);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
当我 运行 使用以下命令将其作为导出的 JAR 文件时
java -jar TonyJavaFX.jar -classpath .;./lib/javafx.controls.jar
,我收到以下错误:
错误:无法找到或加载主程序 class com.javafx.test.MenuTest.MenuTest
原因:java.lang.NoClassDefFoundError:javafx/application/Application
注意:我在 运行 从中下载 jar 的文件夹下有一个 lib 文件夹,其中包含所有 JavaFX jar 文件。
您需要确保模块 javax.controls
和 javafx-graphics.jar
存在于您的 模块路径而不是类路径 。
--module-path ./lib/javafx.controls.jar:./lib/javafx.graphics.jar
注意:这不需要在模块声明中添加 javafx.graphics
模块,因为 javafx.controls
模块需要它。只要模块在模块路径中存在就可以帮助它。
重要提示:理想情况下,您应该将完整的 lib 文件夹添加到模块路径。更多信息 - https://openjfx.io/openjfx-docs/#install-javafx
我有一个测试 JavaFX 程序,在 Eclipse 中 运行 没问题。 - 我必须添加一个包含以下内容的模块信息文件(模块-info.java):
module moduletest {
requires javafx.controls;
exports com.javafx.test.MenuTest;
}
Java class:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class MenuTest extends Application {
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(new VBox(), 300, 250);
Circle circle1 = new Circle(-20,0,200);
circle1.setFill(Color.CADETBLUE);
((VBox) scene.getRoot()).getChildren().addAll(circle1);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
当我 运行 使用以下命令将其作为导出的 JAR 文件时
java -jar TonyJavaFX.jar -classpath .;./lib/javafx.controls.jar
,我收到以下错误:
错误:无法找到或加载主程序 class com.javafx.test.MenuTest.MenuTest 原因:java.lang.NoClassDefFoundError:javafx/application/Application
注意:我在 运行 从中下载 jar 的文件夹下有一个 lib 文件夹,其中包含所有 JavaFX jar 文件。
您需要确保模块 javax.controls
和 javafx-graphics.jar
存在于您的 模块路径而不是类路径 。
--module-path ./lib/javafx.controls.jar:./lib/javafx.graphics.jar
注意:这不需要在模块声明中添加 javafx.graphics
模块,因为 javafx.controls
模块需要它。只要模块在模块路径中存在就可以帮助它。
重要提示:理想情况下,您应该将完整的 lib 文件夹添加到模块路径。更多信息 - https://openjfx.io/openjfx-docs/#install-javafx