如何在IDE之外启动JavaFX11应用程序?

如何在IDE之外启动JavaFX11应用程序?,java,javafx,javafx-11,netbeans-10,Java,Javafx,Javafx 11,Netbeans 10,我下载了: -OpenJDK 11.0.2 -JavaFXSDK 11.0.2 这两个文件都被提取到路径C:/ProgramFiles/Java/ 操作系统:Windows 10 IDE:NetBeans 10.0 路径: JAVA_HOME = C:/Program Files/Java/jdk-11.0.2 PATH_TO_FX = C:/Program Files/Java/javafx-sdk-11.0.2/lib 内部路径系统变量add%JAVA\u HOME%/bin 在Net

我下载了:
-OpenJDK 11.0.2
-JavaFXSDK 11.0.2
这两个文件都被提取到路径
C:/ProgramFiles/Java/

操作系统:Windows 10
IDE:NetBeans 10.0

路径:

JAVA_HOME = C:/Program Files/Java/jdk-11.0.2  
PATH_TO_FX = C:/Program Files/Java/javafx-sdk-11.0.2/lib
内部路径系统变量add
%JAVA\u HOME%/bin

在NetBeans中,我创建了名为JFXDev的Java应用程序项目,其中包含一个com包。com包内有一个主类,其代码如下:

package com;

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 Main extends Application {

        @Override
        public void start(Stage primaryStage) {
            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);

            Scene scene = new Scene(root, 300, 250);

            primaryStage.setTitle("Hello World!");
            primaryStage.setScene(scene);
            primaryStage.show();
        }

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

}

但这没什么区别。
我做错了什么,有什么建议吗

我尝试了来自的步骤,但得到了相同的错误:///p>“实际”答案 您提供的一些错误表明参数中的空格有问题(例如,
C:/Program Files/…
)。用引号将
%PATH\u到\u FX%
括起来:
%PATH\u到\u FX%”
。然后,正如您在中所说,正确的命令行是:

java-p“%PATH\u TO\u FX%”——添加模块javafx.controls-jar

其余答案 从你提供的信息来看,很难(至少对我来说)说出问题的确切原因。相反,我将给出一些从命令行启动JavaFX应用程序的示例,包括模块化和非模块化

假设您有一个项目,其中一个类是名为
com.example.main
的主类。此类扩展了
应用程序
,并显示一个简单的窗口。也就是说,当代码是模块化的时,模块看起来像:

module app {
    requires javafx.controls;
    exports com.example to javafx.graphics;
}
您的项目结构如下所示:

\---
+---出去
|+---人工制品
|| app-1.0.jar(模块化或非模块化)
|   |
|\---班级
||模块-信息类(模块化时)
|       |
|\---com
|\---示例
|主类
|
\---src
|module-info.java(模块化时)
|
\---com
\---范例
主类
然后,您的命令行将类似于以下命令之一(面向Windows):

非模块化 分解目录
java-p“%PATH\u TO\u FX%”——添加模块javafx.controls-cp out\classes com.example.Main
Jar文件
java-p“%PATH\u TO\u FX%”——添加模块javafx.controls-jar out\artifacts\app-1.0.jar
注意:需要清单中的
Main Class
属性

模块化 分解目录
java-p”%PATH\u TO\u FX%;out\classes“-m app/com.example.Main
Jar文件
java-p”%PATH\u TO\u FX%;out\artifacts“-m app/com.example.Main
或者如果Jar是使用
--main类创建/更新的

java-p”%PATH\u TO\u FX%;out\artifacts“-m app

注:

  • 以上假设
    是工作目录
  • -p
    --模块路径
  • -m
    --module
  • -cp
    --类路径
    --类路径

如果您使用
“%PATH\u TO\u FX%”怎么办?错误消息表明参数中的空格有问题。@Slaw这两种方法都无效。是相同的错误还是新的错误?@Slaw-Same-error找不到主类。我用新的第5点更新了我的问题,在那里我尝试了完整路径,并收到了相同的回答。如果您有一个JAR文件,清单中有
Main Class
条目,请尝试
java-p“%path\u TO\u FX%”——添加模块javafx.controls-JAR
。(注意:
-p
--模块路径
的缩写)
module app {
    requires javafx.controls;
    exports com.example to javafx.graphics;
}