Eclipse找不到JavaFX11图例类型

Eclipse找不到JavaFX11图例类型,java,eclipse,javafx,Java,Eclipse,Javafx,我正在尝试使用Java11编写一些Java1.8代码。我碰到了一堵似乎很普通的墙,但我找到的答案都不管用 系统:Fedora 33 5.9.8-200.fc33.x86_64 Eclipse版本:2020-09(4.17.0)构建id:20200910-1200 JDK:java-11-openjdk-11.0.9.11-0.fc33.x86_64 JavaFX:OpenFXJavaFX-sdk-11.0.2 这是阻止我的一段代码 class MyPie extends PieChart {

我正在尝试使用Java11编写一些Java1.8代码。我碰到了一堵似乎很普通的墙,但我找到的答案都不管用

系统:Fedora 33 5.9.8-200.fc33.x86_64
Eclipse版本:2020-09(4.17.0)构建id:20200910-1200
JDK:java-11-openjdk-11.0.9.11-0.fc33.x86_64
JavaFX:OpenFXJavaFX-sdk-11.0.2

这是阻止我的一段代码

class MyPie extends PieChart {
   public Legend legend;
   
   public MyPie() {
      super();
      legend = (Legend) getLegend();
   }
}
错误是:“图例无法解析为类型”,当我要求Eclipse自动生成导入语句或使用建议时,它会放在以下行中:

import com.sun.javafx.charts.Legend;
这是一个问题,因为它似乎不存在,并且与其他JavaFX导入不遵循相同的模式:

import javafx.scene.chart.PieChart;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
我还有第二个“com.sun.javafx.css.StyleManager”,我猜它也会有同样的解决方案

我错过了什么


谢谢。

com.sun
包和类不是公共API的一部分,也不保证在将来的版本中可用。您使用它们时明确假设可能会发生这种情况。如果必须使用专用API,则需要使用
--添加导出
和/或
--添加打开
来授予您的模块(或所有未命名模块)访问权限。这些命令行选项必须在编译时和运行时指定。@James\u D我想这确实是我的问题。。。这些在OpenFX中是否在8到11之间被弃用?名字变了吗?我找不到任何关于这些的信息,也找不到如何用公开的东西来代替它们。Slaw:在Eclipse中我在哪里做这些呢?这两个都不是:类。您无法访问它,因为Java9和更高版本中的新模块系统旨在阻止您使用非公共API。您可以按照@Slaw的评论中所述解决此问题。(我相信您需要类似于
--向编译器和JVM添加exports=javafx.controls/com.sun.javafx.charts=ALL-UNNAMED
)的东西,我刚刚搜索了
Legend
,它肯定在
com.sun.javafx.charts
包中,该包在
javafx.controls
模块中(至少在javafx 15中)。“如果它们是私有的,并且可能在将来发布时被删除,是否有公共的替代品?”——它们始终是私有的,模块系统只是明确了这一点;没有替代品,因为没有什么可替代的。