Oracle Java 8
如果您使用的是Oracle Java 8或更高版本(如cayhorstmann在其回答中所指出),则JavaFX类现在位于Oracle Java实现的默认运行时类路径上。您可以直接运行javac,并java在你的程序和JavaFX类如预期会被发现,就像在JRE其他类。
javac Fxservidor.javajava Fxservidor
OpenJDK的8
如果您使用的是OpenJDK 8,则(当前)将需要从OpenJFX存储库中构建JavaFX源,并将生成的jfxrt.jar放置在您的类路径中,类似于此答案中定义的Java 7的描述。
JavaFX 2.x / Java 7
您可以使用Java编译器来编译JavaFX程序:
"%JDK_HOME%binjavac" -classpath "%JAVAFX_SDK_HOME%rtlibjfxrt.jar" fxservidor.java
将JDK_HOME和JAVAFX_SDK_HOME占位符分别替换为已安装的JDK和JavaFX SDK的路径。
此处提供了JavaFX 2.x命令行开发和部署打包的示例Windows批处理脚本。
这是我在计算机上运行的用于编译您的应用程序的命令(您需要针对您的环境调整类路径):
javac -classpath "Program FilesOracleJavaFX 2.1 Runtimelibjfxrt.jar" Fxservidor.java
这是我用来运行已编译类的命令:
java -classpath "Program FilesOracleJavaFX 2.1 Runtimelibjfxrt.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任务,javafxpackager,javafx-maven-plugin或javafx-gradle-plugin)打包应用程序。
如果您只是想对小型程序进行一些快速的命令行开发和测试,则不需要那些额外的打包工具,您只需使用此答案中的简单步骤即可。



