我在 stackoverflow 上的第一个问题:
我使用的是 MacOS BigSur 11.5.2、2.3 GHz 双核 i5、8GB。我正在使用 Eclipse IDE for Java v4.17。我已经从 gluonhq.com 下载并配置了 JavaFX SDK (v11.0.2)
我正在尝试运行一个基本的 JavaFX HelloWorld 程序(很常见,随处可见)。当我运行这个程序时,它所做的只是在桌面任务栏中打开一个蓝色的 Java 文件夹;它不会打开一个名为“Hello World”的新 UI 窗口。
我已将 JavaFX SDK 外部库添加到项目的构建路径中。
我已在运行配置的虚拟机参数中指定了 JavafX SDK 的正确路径。
--模块路径/Documents/javafx-sdk-11.0.2/lib --add-modules javafx.controls,javafx.fxml
我已确保在运行配置中识别 javafx.controls 和 javafx.fxml 模块依赖项(我假设此处包含所有必需的
requires transitive
模块)。
这是我的Main.java类
package com.me.jfxapplication;
import javafx.application.Application;
import javafx.scene.Parent;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = javafx.fxml.FXMLLoader.load(getClass().getResource("Sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这是我的Sample.fxml文件
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.GridPane?>
<GridPane fx:controller="com.cowsill.jfxapplication.Controller"
xmlns:fx="javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>
这是我的module-info.java
module com.me.jfxapplication {
exports com.me.jfxapplication;
requires javafx.base;
requires javafx.fxml;
requires javafx.graphics;
}
我还尝试通过以下方式在命令行上运行它:
javac --module-path ~/Documents/javafx-sdk-11.0.2/lib/ --add-modules javafx.controls,javafx.fxml jfxapplication/Main.java
java --module-path ~/Documents/javafx-sdk-11.0.2/lib/ --add-modules javafx.controls,javafx.fxml jfxapplication/Main.java
在搜索网络资源后,似乎有很多关于 JFX 模块依赖关系的重复问题。我浏览了其他人遇到的问题的每个实例,并反映了他们建议的每个错误修复。我的程序正在运行是吗?它只是不显示场景图/UI。
谢谢!
使用 Eclipse IDE 时,单击“运行”->“运行配置...”->“Java 应用程序”->“您的项目”->“参数”。
确保未选中复选框“使用 SWT 启动时使用 -XstartOnFirstThread 参数”。
这应该可以解决问题。
我的Mac现在也有同样的问题,你找到解决方案了吗?每次我运行 javafx(简单计算器,甚至 hello world)代码时,它都会变成这个蓝色的 java 文件夹。