我的背景:
简单的事情:
import com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler;
import javafx.application.Application;
import javafx.stage.Stage;
public class ImportCom extends Application {
@Override
public void start(Stage arg0) throws Exception {
new LambdaMultiplePropertyChangeListenerHandler();
}
}
由于,无法编译
The type com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler is not accessible
怎么办?
看起来similar但现在是内部类;)一直在编译直到beta9支持的补丁530,但之后没有 - 所以保持那个古老的氧气作为黄金宝藏......
注意:交叉发布到eclipse forum
编辑:
刚刚在命令行上检查了javac的行为:
C:\Users\kleopatra\ox-1a-64\dummy\src>\java\jdk\190-64\bin\javac first\ImportCom.java
first\ImportCom.java:3: error: package com.sun.javafx.scene.control is not visible
import com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler;
^
(package com.sun.javafx.scene.control is declared in module javafx.controls, which does not export it to the unnamed module)
1 error
错误类似于Eclipse中的错误。适用于--add-exports:
C:\Users\kleopatra\ox-1a-64\dummy\src>\java\jdk\190-64\bin\javac --add-exports=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED first\ImportCom.java
所以问题归结为:在哪里/如何配置Eclipse,以便它像javac一样编译对内部类的访问?
答案 0 :(得分:6)
答案 1 :(得分:4)
要解决此问题,您必须添加编译器参数 --add出口= javafx.controls / com.sun.javafx.scene.control = A LL-UNNAMED。 这也可以在Eclipse中完成,但我不得不承认在一个非常隐蔽的地方。
转到项目的属性,然后转到Java Build Path。 选择Modulepath,然后选择JRE System库(应该是java 9)。 在里面你找到一个项目"是模块化的"。选择那个。然后打开"编辑" 在右边,菜单将打开。在顶部选择"详细信息"。在那里,您将看到一个表格,您可以在其中添加导出。信不信由你工作:-)我必须清理并重新构建项目,以便真正得到这个编译。
答案 2 :(得分:3)
嗯,它有点隐藏:
如果您已安装适用于Java 9支持的Beta插件 - 请卸载。确保安装了最新的Java 9支持插件。