【发布时间】: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 设置。)