Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
某些javafx类无法在Eclipse中使用JavaSE8U25解析_Java_Eclipse_Javafx - Fatal编程技术网

某些javafx类无法在Eclipse中使用JavaSE8U25解析

某些javafx类无法在Eclipse中使用JavaSE8U25解析,java,eclipse,javafx,Java,Eclipse,Javafx,我从Oracle安装了JavaSE8U25 JDK(64位),它应该包括JavaFX 我正在使用Win7 64位Eclipse Helios,并在类路径中包含jre,如下所示: 我试图复制本教程中的代码: Eclipse在尝试使用javafx.scene.control.Button.setText(String)时向我显示“类型javafx.scene.control.control无法解析。它是从必需的.class文件间接引用的”。 尝试创建StackPane对象时也会出现类似问题 以下

我从Oracle安装了JavaSE8U25 JDK(64位),它应该包括JavaFX

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

我试图复制本教程中的代码:

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();

}
}
packagejavafx;
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.control.Button;
导入javafx.stage.stage;
公共类HelloWorld扩展了应用程序{
@凌驾
public void start(Stage primaryStage)引发异常{
按钮btn=新按钮();
btn.setText(“你好,世界!”);
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent arg0){
System.out.println(“你好,世界!”);
}
});
StackPane root=新的StackPane();
}
}

Tl;dr:JavaSE8U25中似乎缺少一些JavaFX类,或者我在构建路径中包含jre时犯了一个错误。

编辑

您尚未导入StackPane的类:

import javafx.scene.layout.StackPane;
先前的答复:

基本上,您还没有导入javafx库,您可以
添加外部jar
,并指向
jfxrt.jar
,它就可以正常工作了

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

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

有一个简单的方法,

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


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

  • 打开Eclipse并转到
    帮助>安装新软件
    并插入URL
    http://download.eclipse.org/efxclipse/updates-released/1.1.0/site/
    在“使用:”下,然后按enter键
  • 加载软件包后,选择并安装这两个软件包
  • 重新启动Eclipse后,您可以转到
    File>New>Other…
    并选择
    JavaFX>javafxproject
  • 还有一步要做:通过转到项目属性并选择“addexternaljar…”,将
    jfxrt.jar
    添加到类路径中
    • Windows:
      C:\ProgramFiles\Java\jdk1.8.0\U 25\jre\lib\ext
    • Mac OS:
      /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/ext/jfxrt.jar
  • 准备好制作可爱的JavaFX GUI了


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

    安装最新的JDK会有所帮助。请参阅以下两个链接:

    为什么在构建路径中有Java 6和Java 8?这可能会引起混乱。我把它删除了。我在构建路径中只有
    jre1.8.0_25
    junit4
    jfxrt.jar
    。我清理并刷新了项目,但问题仍然存在。它不应该包含在jdk中吗?不管怎样,我把它作为一个外部JAR添加到项目的构建路径中,但这并没有解决问题。它是jdk内部的jre,请看我上面的路径:),jdk也有jre文件夹,如果你看得对的话。我的意思是javaFX应该包含在jre中,也就是说,我不需要添加
    jfrxt.JAR
    ,就可以方便地使用它。但是,正如你告诉我的,问题仍然存在。谢谢你的帮助。如果我尝试按您编写的方式导入StackPane,则会得到导入javafx.scene.layout.StackPane无法解析的
    。我重新启动了Eclipse,但它仍然是一样的。我通过添加
    jfxrt.jar
    使它在NetBeansIDE8.0中工作。这只是一个解决办法,但我对它没意见。导入javafx.scene.layout.StackPane,不要忘了在声明之后放“;”是的,我无法在Helios上安装e(fx)clipse,它可能太旧了。我安装了Luna,它在将
    jfxrt.jar
    包含到类路径中后工作。我怀疑问题是除了Helios中的1.6之外,我无法切换到更新的Java编译器。这在Linux中是什么位置?在
    /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/
    中不存在
    jre/
    ,我如何解决这个问题?我试着重新安装,但没用。