使用 JavaFX 2.0 编译代码(使用命令行)

2022-09-01 15:36:32

我想知道如何使用JavaFX从Windows shell编译代码。

我在:fxservidor.java

public class Fxservidor extends Application {

    /**
     * @param args the command line arguments
     */
    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) {
                Synthetizer os = new Synthetizer("Ximena");                
            }
        });

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

答案 1

Oracle Java 8

如果您使用的是Oracle Java 8或更高版本,正如cayhorstmann在他的回答中指出的那样,JavaFX类现在位于Oracle Java实现的默认运行时类路径上。您只需在程序上运行,JavaFX类将按预期找到,就像JRE中的任何其他类一样。javacjava

javac Fxservidor.java
java Fxservidor

开放JDK 8

如果您使用的是 OpenJDK 8,则(目前)需要从 OpenJFX 存储库构建 JavaFX 源代码,并将生成的 jfxrt.jar放在类路径上,类似于本答案中定义的 Java 7 的描述。

JavaFX 2.x / Java 7

您可以使用 Java 编译器来编译 JavaFX 程序:

"%JDK_HOME%\bin\javac" -classpath "%JAVAFX_SDK_HOME%\rt\lib\jfxrt.jar" fxservidor.java 

将JDK_HOME和JAVAFX_SDK_HOME占位符分别替换为已安装的 JDK 和 JavaFX SDK 的路径。

此处提供了 JavaFX 2.x 命令行开发和部署打包的示例 Windows 批处理脚本。

以下是我在计算机上运行的命令,用于编译应用程序(您需要针对您的环境调整类路径):

javac -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar" Fxservidor.java

下面是我用来运行编译类的命令:

java -classpath "\Program Files\Oracle\JavaFX 2.1 Runtime\lib\jfxrt.jar;." Fxservidor

请注意用于将当前目录追加到 Windows 中 java 执行命令的类路径的标记(如果使用 Unix 变体,则使用 代替 )。;.:.;.

示例应用

下面是将编译的程序的修改版本:

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 Fxservidor 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();
    }

}

部署建议

如果您要将应用程序部署到用户,即使使用Java 8,也建议您使用相关的打包工具(例如JavaFX ant任务javafxpackagerjavafx-maven-pluginjavafx-gradle-plugin)打包应用程序。

如果您只想对小程序进行一些快速的命令行开发和测试,则不需要这些额外的打包工具,您只需使用此答案中的简单步骤即可。


答案 2

在Macbook,osx等中,您可以编译:

javac -cp "/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor.java

并运行:

java -cp ".:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfxrt.jar" Fxservidor

请注意,而不是.:.;


推荐