【问题标题】:Eclipse not running JavaFX application - runs 'java' applicationEclipse 未运行 JavaFX 应用程序 - 运行“java”应用程序
【发布时间】:2015-03-06 23:11:51
【问题描述】:

每当我在 Eclipse 中创建项目并包含 javafx 时,单击运行按钮时应用程序不会加载。

例如

package test;

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

public class test extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}

这应该运行一个简单的 hello world 应用程序,取自 oracle 文档。但是,当我“运行”这段代码时,没有打开任何窗口。而是打开一个名为“java”的应用程序。看起来“java”只是位于“jdk1.8.0_25.jdk/contents/home/bin”中的“unix 可执行文件”。应用程序“java”完全不显示任何内容,如果不强制退出就无法关闭。

我在 Macbook 上运行 eclipse。我可能遗漏了一些重要的细节......

有人知道为什么我的应用程序没有按应有的方式运行吗?原谅我的天真,我是java和eclipse的新手。

非常感谢

编辑:

import javafx.application.Application;
import javafx.stage.Stage;


public class JavaFX extends Application {

    public static void main(String[] args){
            launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        // TODO Auto-generated method stub
        stage.show();

    }

}

这个简单的程序也给出了同样的错误。

【问题讨论】:

  • 'java' 是 JVM 的可执行文件,您的 Java/JavaFX 应用程序在其中执行。您正在展示start 的实现,但显然调用了一个名为launch 的方法。
  • 这是从oracle网站docs.oracle.com/javafx/2/get_started/hello_world.htm获取的代码不正确吗?
  • 不,代码是正确的。 @nitind 这是启动 JavaFX 应用程序的正确方法。 (静态 launch() 方法继承自 Application。)这对我来说运行良好(在 Mac OS X 10.9.5 上)。
  • 所以你知道我做错了什么吗?还是我的 Eclipse 设置不正确?
  • 尝试从终端运行?首先使用java -version 检查您的Java 版本,然后尝试java -cp /path/to/project/bin test.test。 (/path/to/project 应该类似于 ~/Documents/workspace/projectName 并且 bin 子目录应该包含 test/test.class。文件夹等可能取决于您的 Eclipse 设置。)

标签: java eclipse macos javafx


【解决方案1】:

所以我知道这是一个老问题,但我最近遇到了我认为同样的问题,并想分享我找到的解决方案(尽管我对 为什么它有效)。

pictured

转到主类的运行配置,然后在“参数”选项卡上,取消选中“使用 SWT 启动时使用 -XstartOnFirstThread 参数”框。

添加问题的视觉示例,以便比我更有知识的人可以解释为什么会发生这种情况/为什么这个解决方案有效:

This 是您尝试运行程序时得到的。一个简单称为“java”的应用程序似乎正在运行,但没有显示任何内容。

我希望这些信息能够对某人有所帮助。

【讨论】:

  • 太棒了!这救了我的命
  • 这是一个很好的答案 (+1),但更深入的解释会更有帮助(如果有更博学的人可以参与)
【解决方案2】:

可能的解决方案从 eclipse 市场安装这个 https://www.eclipse.org/efxclipse/install.html

【讨论】:

  • 不,e(fx)clipse 对于在 Eclipse 中运行 JavaFX 应用程序不是必需的。
【解决方案3】:

当我尝试在具有 maven 依赖项的现有 SWT 项目中运行 JavaFX 主类时遇到了同样的问题:

<dependency>
   <groupId>org.eclipse.swt</groupId>
    <artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
    <version>4.3</version>
</dependency>

当我注释掉这个依赖时,应用程序窗口被显示并且一切正常。

【讨论】:

    【解决方案4】:

    为了让您知道,我在 Eclipse for Java 中创建了一个新项目,并将您的代码复制/粘贴到其中。然后只需单击运行图标即可。它工作得很好。我将为您附上我的设置的屏幕截图。

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多