【发布时间】:2016-07-17 13:03:40
【问题描述】:
这里是用于 JavaFX 项目的 netbeans IDE 的模板代码。 如果你从 BombDroid 类中清除 public 关键字,你会得到运行时错误。为什么? 注意:我知道 main 应该是公开的。但是为什么 Bombdroid 类应该是公开的呢?
package bombdroid;
import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.shape.*;
import javafx.stage.Stage;
public class BombDroid extends Application {
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root);
Line line = new Line(0, 0, 500, 500);
Rectangle man = new Rectangle(0, 0, 100, 100);
root.getChildren().add(line);
root.getChildren().add(man);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
【问题讨论】:
-
我的猜测是,因为最终调用
main的是不同的类,所以这些类看不到那个类,因为它是default或package-private。我很想看看如果您将包设置为与调用代码相同会发生什么(java.lang也许?) -
@Zymus,这是由 JRE 运行时启动器
java启动的应用程序。没有充当调用代码的用户代码。所有调用代码都在 JRE 中。由于 JRE 安全限制,用户代码不能放在 java.lang (java.lang.SecurityException: Prohibited package name: java.lang) 中,因此无法尝试您建议的测试。 -
虽然可能会认为这个问题是相关问题的重复:why main method in Java need to be public always?,但这并不是因为这个问题是指包含 main 方法的类上的访问分类器,而不是main 方法本身。