3

我有一个在 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 文件。

4

1 回答 1

2

您需要确保模块javax.controlsjavafx-graphics.jar存在于您的modulepath 而不是 classpath上。

--module-path ./lib/javafx.controls.jar:./lib/javafx.graphics.jar

注意:这不需要javafx.graphics在您的模块声明中添加模块,因为它是javafx.controls模块传递性需要的。只是模块路径中模块的存在会有所帮助。

重要提示:理想情况下,您应该将完整的 lib 文件夹添加到模块路径。更多在这里 - https://openjfx.io/openjfx-docs/#install-javafx

于 2018-12-10T15:43:41.463 回答