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;
}
希望对您有所帮助!
我刚开始使用成功运行的 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;
}
希望对您有所帮助!