【发布时间】:2018-12-10 15:18:48
【问题描述】:
我有一个在 Eclipse 中运行良好的测试 JavaFX 程序。 - 我必须添加一个包含以下内容的模块信息文件 (module-info.java):
module moduletest {
requires javafx.controls;
exports com.javafx.test.MenuTest;
}
Java 类:
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
,我收到以下错误:
错误:无法找到或加载主类 com.javafx.test.MenuTest.MenuTest 引起:java.lang.NoClassDefFoundError: javafx/application/Application
注意:我在运行 jar 的文件夹下直接有一个 lib 文件夹,其中包含所有 JavaFX jar 文件。
【问题讨论】:
-
除了 nullpointer 的答案之外,您应该将代码作为模块启动;使用
--module(或简写版本-m)代替-jar。据我所知,在使用-jar时,它不会将 JAR 文件视为模块。这意味着module-info文件被忽略,系统不知道如何解析javafx.controls或javafx.graphics模块。
标签: java javafx java-11 openjfx