当前位置: 首页 > 知识库问答 >
问题:

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

阎阳
2023-03-14
JAVA_HOME = C:/Program Files/Java/jdk-11.0.2  
PATH_TO_FX = C:/Program Files/Java/javafx-sdk-11.0.2/lib

在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);
        }

}

修改项目属性:
1)库->Modulepath添加路径C:/Program Files/java/javafx-sdk-11.0.2/lib
2)库->类路径添加路径C:/Program Files/java/javafx-sdk-11.0.2/lib/javafx.controls.jar
3)运行->VM选项:添加--add-modules=javafx.controls,javafx.fxml

当我用NetBeans启动应用程序时,它工作得很好,但我无法从dist文件夹启动应用程序。我在cmd中尝试了以下命令:

    null
    null
    null
    null
    null
module JFXDev {  
    requires javafx.controls;  
    exports com;  
}  

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

我尝试了https://openjfx.io/openjfx-docs/#install-javafx中的步骤,但得到了相同的错误:/

共有1个答案

寿伟
2023-03-14

您提供的一些错误表明参数中的空格有问题(例如c:/program files/...)。用引号围绕%path_to_fx%:“%path_to_fx%”。那么,正如您在注释中所说的,正确的命令行是:

java -p "%PATH_TO_FX%" --add-modules javafx.controls -jar <path-to-jar-file> 

根据你提供的信息,很难(至少对我来说)说出问题到底是什么。相反,我将给出一些从命令行启动JavaFX应用程序的示例,包括模块化和非模块化。

假设您有一个具有一个类的项目--主类--名为com.example.main。这个类扩展application并显示一个简单的窗口。我们还可以说,当代码是模块化的时,模块看起来像:

module app {
    requires javafx.controls;
    exports com.example to javafx.graphics;
}
\---<project-directory>
    +---out
    |   +---artifacts
    |   |       app-1.0.jar (modular or non-modular)
    |   |
    |   \---classes
    |       |   module-info.class (when modular)
    |       |
    |       \---com
    |           \---example
    |                   Main.class
    |
    \---src
        |   module-info.java (when modular)
        |
        \---com
            \---example
                    Main.java
java -p "%PATH_TO_FX%" --add-modules javafx.controls -cp out\classes com.example.Main
java -p "%PATH_TO_FX%" --add-modules javafx.controls -jar out\artifacts\app-1.0.jar
java -p "%PATH_TO_FX%;out\classes" -m app/com.example.Main
java -p "%PATH_TO_FX%;out\artifacts" -m app/com.example.Main
java -p "%PATH_TO_FX%;out\artifacts" -m app
    null
 类似资料:
  • 问题内容: 我尝试使用范围类型APPLICATION和带有@ Create,@ Beg的方法来注释类,但这似乎不起作用。 我想要的是在应用程序启动时立即启动无限循环。 问题答案: 如果希望在初始化后立即执行方法,则可以使用以下注释:

  • 我想迁移到JavaFX11。我已经学习了OpenJFX的“JavaFX11入门”(https://openjfx.io/openjfx-docs/),使用OpenJDK 11.0.1和Gluon的JavaFX SDK 11.0.1(在Netbeans 10VC2上),并且已经能够使示例应用程序运行(在我看来,我应该能够很容易地将JavaFX8代码移植到JavaFX11)。 然而,这正是我无法找到方

  • 问题内容: 我正在编写一个使用node.js访问本地文件系统的桌面Web应用程序。我目前可以使用node.js打开文件并将其复制到硬盘驱动器上的不同位置。我还想做的是允许用户使用与文件类型关联的应用程序打开特定文件。换句话说,如果用户在Windows环境中选择“ myfile.doc”,它将使用该文件启动MSWord。 我一定是术语的受害者,因为除了与node.js进行通信的子进程的生成之外,我什

  • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

  • 我希望API级别>=19。 请帮助我解决我的问题..........谢谢

  • 我不确定不将JDK 8与包含的JavaFX一起使用是否有意义,但无论如何,在Eclipse中如何在这种情况下使用JavaFX?