使用 Java SE 8u25 在 Eclipse 中无法解析某些 javafx 类

Posted

技术标签:

【中文标题】使用 Java SE 8u25 在 Eclipse 中无法解析某些 javafx 类【英文标题】:Some javafx classes cannot be resolved in Eclipse using Java SE 8u25 【发布时间】:2015-03-16 16:44:11 【问题描述】:

我从 Oracle 安装了 Java SE 8u25 JDK(64 位),其中应该包括 JavaFX。

我正在使用 Win7 64 位、Eclipse Helios 并将 jre 包含在类路径中,如下所示:

我正在尝试复制本教程中的代码: http://docs.oracle.com/javase/8/javafx/get-started-tutorial/hello_world.htm

Eclipse 在尝试使用javafx.scene.control.Button.setText(String) 时向我显示“无法解析类型 javafx.scene.control.Control。它是从所需的 .class 文件中间接引用的”。 尝试创建StackPane 对象时会出现类似问题。

这是目前为止的代码:

package javaFX;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.stage.Stage;

public class HelloWorld extends Application 

@Override
public void start(Stage primaryStage) throws Exception 

    Button btn = new Button();
    btn.setText("Hello world!");
    btn.setOnAction(new EventHandler<ActionEvent>()

        @Override
        public void handle(ActionEvent arg0) 
            System.out.println("Hello world!");
        

    );

    StackPane root = new StackPane();



Tl;dr:Java SE 8u25 中似乎缺少一些 JavaFX 类,或者我在构建路径中包含 jre 时出错。

【问题讨论】:

为什么在构建路径中有 Java 6 和 Java 8?这可能会造成混乱。 我删除了它。我在构建路径中只有jre1.8.0_25JUnit 4jfxrt.jar。我清理并刷新了项目,问题仍然存在。 【参考方案1】:

编辑

您还没有为 StackPane 导入类:

import javafx.scene.layout.StackPane;

上一个答案:

基本上你还没有导入你的javafx库,你可以Add External JARs,并指出jfxrt.jar,它就可以正常工作了。

在我的路径中,jfxrt.jar 在:

C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext

有一个简单的方法,

【讨论】:

不应该包含在jdk中吗?无论哪种方式,我都将其作为外部 JAR 添加到项目的构建路径中,但这并没有解决问题。 在jdk里面是jre,看看我上面的路径..:),如果你没看错的话jdk也有jre文件夹 我的意思是 javaFX 应该包含在 jre 中,即我不需要添加 jfrxt.jar 来使用它 afaik。但是,I included it 就像你告诉我的那样,但问题仍然存在。 感谢您的帮助。如果我尝试按照您编写的方式导入 StackPane,我会得到 The import javafx.scene.layout.StackPane cannot be resolved。我重新启动了 Eclipse,但它仍然是一样的。我通过添加 jfxrt.jar 让它在 Netbeans IDE 8.0 中工作。这只是一种解决方法,但我对它很好。 导入javafx.scene.layout.StackPane,别忘了放“;”声明后【参考方案2】:

注意:我看到您正在使用 Eclipse Helios。您还可以下载最新版本的 Eclipse Luna。这也可以。


您可以尝试 e(fx)clipse,这在使用 Eclipse 开发 FX 应用程序时可能是一个有用的 IDE 扩展。为此,请按以下步骤操作:

    打开 Eclipse 并转到 Help &gt; Install New Software 并在“使用:”下插入 URL http://download.eclipse.org/efxclipse/updates-released/1.1.0/site/,然后按 Enter 加载软件包后,选择并安装它们 重启 Eclipse 后,您可以转到 File &gt; New &gt; Other ... 并选择 JavaFX &gt; JavaFX Project 还有一步要做:通过转到项目属性并选择“添加外部 JAR ...”,将 jfxrt.jar 添加到类路径中 窗口:C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext Mac 操作系统:./Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/ext/jfxrt.jar。 准备好制作可爱的 JavaFX GUI!

注意:e(fx)clipse 为开发 JavaFX 应用程序提供了更多支持。随意看看。

【讨论】:

是的,我无法在 Helios 上安装 e(fx)clipse,它可能太旧了。我安装了 Luna 并在将jfxrt.jar 包含到类路径后工作。我怀疑问题在于我无法在 Helios 中切换到除 1.6 之外的更新的 Java 编译器。 这是在 Linux 中的什么地方? /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/ 中不存在jre/,我该如何解决?我尝试重新安装,但没有成功。【参考方案3】:

安装最新的 JDK 会有所帮助。请看两个链接: enter link description here enter link description here

【讨论】:

以上是关于使用 Java SE 8u25 在 Eclipse 中无法解析某些 javafx 类的主要内容,如果未能解决你的问题,请参考以下文章

java1234教程系列笔记 S1 Java SE 02 eclipse初步使用注释标识符

Eclipse java SE版本解决无法新建web项目问题

eclipse中Java(TM) Platform SE binary已停止工作怎么解决

JAVA_SE_概括

eclipse SE增加Web开发插件

eclipse通过maven建立java se工程配置log4j,打包成zip,将jar包和配置文件分开,并以bat和sh文件启动java程序