当前位置: 首页 > 知识库问答 >
问题:

模块javafx.base无法访问类application.Customer(在模块FCR中),因为模块FCR没有向javafx.base打开应用程序

巩枫
2023-03-14

原因:java.lang.IllegalAccessException:模块javafx.base无法访问类application.Customer(在模块FCR中),因为模块FCR没有向javafx.base打开应用程序

javafx.base/com.sun.javafx.property.methodHelper.invoke(MethodHelper.java:69)
在javafx.base/com.sun.javafx.property.property.property.getProperty(PropertyReference.java:197)
...98更多

这是客户的代码:

public class customer {

private final IntegerProperty ID;
private final StringProperty  firstName;
private final StringProperty  lastName;
private final StringProperty  carPlate;
private final IntegerProperty telephoneNum;

public customer(int ID,String firstName, String lastName, String carPlate, int telephoneNum) {
    this.ID = new SimpleIntegerProperty();
    this.firstName = new SimpleStringProperty();
    this.lastName = new SimpleStringProperty();
    this.carPlate = new SimpleStringProperty();
    this.telephoneNum = new SimpleIntegerProperty();

    setID(ID);
    setfirstName(firstName);
    setlastName(lastName);
    setcarPlate(carPlate);
    settelephoneNum(telephoneNum);
}

public final StringProperty firstNameProperty() {
    return firstName;
}

public final String getfirstName() {
    return firstName.get();
}

public final void setfirstName(String fname) {
    firstName.set(fname);
}

public final IntegerProperty IDProperty() {
    return ID;
}

public final int getID() {
    return ID.get();
}

public final void setID(int iD) {
    ID.set(iD);
}

public final StringProperty lastNameProperty() {
    return lastName;
}

public final String getlastName() {
    return lastName.get();
}

public final void setlastName(String lname) {
    lastName.set(getfirstName());;
}

public final IntegerProperty telephoneNumProperty() {
    return telephoneNum;
}

public final int gettelephoneNum() {
    return telephoneNum.get();
}

public final void settelephoneNum(int tnum) {
    telephoneNum.set(tnum);;
}

public final StringProperty carPlateProperty() {
    return carPlate;
}

public final String getcarPlate() {
    return carPlate.get();
}

public final void setcarPlate(String platenum) {
    carPlate.set(platenum);
}
public class checkCustomers {

private customersData q = Main.q;

@FXML
private TableView table;


@FXML
private TableColumn firstName;
@FXML
private TableColumn lastName;
@FXML
private TableColumn carPlate;
@FXML
private TableColumn telephoneNumber;


@FXML
public void initialize() {
    
System.out.println(1);

firstName.setCellValueFactory(new PropertyValueFactory<customer, String>("firstName"));
lastName.setCellValueFactory(new PropertyValueFactory<customer, String>("lastName"));
carPlate.setCellValueFactory(new PropertyValueFactory<customer, String>("carPlate"));
telephoneNumber.setCellValueFactory(new PropertyValueFactory<customer, Integer>("telephoneNumber"));
table.setItems(FXCollections.observableArrayList(q.getAllCustomers()));
}

module-info.java代码如下:

module FCR {
    requires javafx.controls;
    requires javafx.fxml;
    requires java.sql;
    requires javafx.base;

    opens application to javafx.graphics, javafx.fxml;
}

我想我应该在模块中添加一些信息-有人能帮忙吗?

共有1个答案

井嘉胜
2023-03-14

PropertyValueFactory类使用反射获取命名属性。您必须授权该类的模块(javafx.base)对您的代码进行必要的访问,以便该反射能够工作。

变化:

opens application to javafx.graphics, javafx.fxml;

致:

opens application to javafx.graphics, javafx.fxml, javafx.base;
    null
    null
lastNameCol.setCellValueFactory(data -> data.getValue().lastNameProperty());
 类似资料:
  • 我已经用OpenJDK13配置了JavaFX11。我已经将静态地添加到JavaFX的位置。 在项目结构中,我已经配置了OpenJDK13,但它仍然提供了错误中没有

  • 完整错误:中发现了两个版本的模块javafx.base Build.Gradle

  • 问题内容: 我需要知道是否存在从子模块访问父模块的方法。如果我导入子模块: 我有-是否有一些Python魔术可以从中访问模块?上课与此类似。 问题答案: 如果您已经访问了模块,则通常可以从词典中访问它。Python不会使用名称保留“父指针”,特别是因为这种关系不是一对一的。例如,使用您的示例: 如果你会注意到存在的在模块只是一个假象在里面的语句。只要您需要该模块即可。 实际上,将来的版本可能不再导

  • 我已经按照本指南将JavaFX安装到Linux机器上。首先我安装了Java11 然后,我从命令安装了OpenJFX 然后在Eclipse中创建了一个库。 然后我将它包含到我的java项目中。我尝试运行以下代码: 我已经将运行配置更改为: 但是当我编译代码的时候。我得到以下错误: 问题: 哪里有人知道如何解决这个错误吗?我以前安装过JavaFX,但这一次,它对我不起作用。 编辑1:如果我将运行配置更

  • 我有1个应用程序和2个模块 框架结构 但我不能在MyApp中使用MyModule的文件。IDE显示我“无法访问”错误,我想扩展一个MyModule类的类。而且它不是从MyModule创建类的,有人对此有想法吗?怎么了?

  • 当我试图编译新的模块化Java11应用程序时,我得到了这个错误消息: