JavaFx:无法在另一个包中调用 Main class? (智能理念)

JavaFx: Can't call Main class in another package? (IntelliJIdea)

我刚开始使用成功运行的 intelliJ 创建 JavaFx 项目。我正在使用 JDK 11 并且创建了一个模块信息。但是,当我创建另一个包并移动 Main class.

时,它不再是 运行

主要class:

package com.main;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("/src/sample/sample.fxml"));
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();
}


public static void main(String[] args) {
    launch(args);
}

}

sample.fxml

<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>

模块信息

module ProjectJavaFxA {
    requires javafx.fxml;
    requires javafx.controls;

    opens sample;
}

控制器class

package sample;

public class Controller {
}

New Image

您可以通过在 module-info.java 文件中导出包 sample 来解决问题,像这样更新您的文件,它应该可以解决问题 -

模块-info.java

module ProjectJavaFxA {
    requires javafx.fxml;
    requires javafx.controls;

    exports sample;
    opens com.main;
}

希望对您有所帮助!