![](/img/trans.png)
[英]JavaFX application not running from command line / how to build and export correctly?
[英]How to run JavaFx application from command line
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class app extends Application
{
@Override
public void start(final Stage stage) throws Exception
{
final Circle circ = new Circle(40, 40, 30);
final Group root = new Group(circ);
final Scene scene = new Scene(root, 400, 300);
stage.setTitle("Hello JavaFX 2.0!");
stage.setScene(scene);
stage.show();
}
public static void main(String[] arguments)
{
Application.launch(arguments);
}
}
我有这个 JavaFx 代码,我想从命令行运行。 I tried the command javac -d app.java it gives me an error: no source files and if I try with the command java -cp D:\javafx-sdk-13.0.2\lib\jfxrt.jar app.java. 错误消息是找不到应用程序。 我做错了什么,如何修复它以便 GUI 应用程序从命令行运行?
首先,请确保您知道如何运行常规的 java 应用程序。
注意:如果您使用的是 JDK 版本 10 或更低版本,则可以像运行其他 java 程序一样直接运行 javafx 应用程序,因为 javafx 预安装在 JDK 或以下版本中。 为了检查您的 JDK 版本,请在命令行中键入以下命令:
javac -version
请注意,本教程仅适用于 WINDOWS。
如前所述,您需要以下代码从命令行编译 javafx 应用程序:
第1步:输入“cd”,然后将路径从“C:”(C盘)开始写入你上面保存代码的位置为.java格式。
第 2 步:然后您需要按 Enter,以便命令行打开该路径。 如果它产生错误,请重新检查您传递的路径。 如果路径在某处之间有空格。 请在写入 cd 后用双引号 (" ") 将其括起来。 然后再试一次。
第 3 步:在您的.java 文件所在文件夹的命令行中键入以下内容:
javac --module-path "Path to your javafx lib folder" --add-modules javafx.controls,javafx.fxml YourFile.java
在上面的双引号中,您需要在您从openjfx.io安装的 javafx-sdk 文件夹中写入 lib 文件夹的路径。
上面的代码会将你的.java文件编译成.class文件,一种可以被JVM(java虚拟机)解释的代码格式。 更多关于 java 中 class 文件的信息: Java Class 文件
在此之后,您需要 java 来解释和运行您刚刚使用上述语法创建的.class 文件。
为此,您只需在上述代码中从“javac”中删除“c”,并删除.java 扩展名。 其他事情保持不变。
java --module-path "Path to your javafx lib folder" --add-modules javafx.controls,javafx.fxml YourFile
这应该可以完美运行并帮助您从 cmd 运行 javafx 应用程序。
现在,如果您觉得一次又一次地编写此代码是一种负担。 您可以执行以下操作。
环境变量可以帮助您将上述代码编译成一个单词,您可以在命令行中键入该单词并用 % 包围。
为了设置您的环境变量,go 到屏幕左下角的搜索栏。 然后在搜索栏中输入环境变量。
你应该看到类似这样的东西。
您可以单击打开按钮以在控制面板中打开它。 然后按照以下步骤操作:
--module-path "Path to your javafx lib folder" --add-modules javafx.controls,javafx.fxml
请在您打开的.fx文件夹中写入您下载的lib文件夹的完整正确路径并确保它在双引号内。
完成后,单击“确定”,然后关闭控制面板。 现在您需要重新启动命令行应用程序。 如果不重新启动,它不会显示您刚刚设置的环境变量。 只需关闭它并再次打开它。
现在在命令行中输入以下内容: echo %JAVA_FX%
这应该会显示您刚刚设置的变量值。 如果它打印 JAVA_FX,那么请考虑重新参考上述步骤并检查您在环境变量的变量值中键入 lib 文件夹的路径时是否存在任何路径错误。
如果它显示正确的值,请继续:
现在您可以在命令行中键入以下命令。 确保您在保存.java 文件的文件夹中,如果没有,请使用前面提到的“cd”命令直接进入该文件夹:
javac %JAVA_FX% YourFile.java
确保将“YourFile”名称更改为 java 文件的名称。
然后它应该将 java 文件编译成 java class 文件。 然后在命令行中键入以下内容: java %JAVA_FX% YourFile
这应该可以正常工作。
希望您学到了新的东西,如果您有任何进一步的疑问,请在评论部分提出。
这是我用来让它从命令行运行的命令
// 编译:
javac --module-path D:\javafx-sdk-13.0.2\lib --add-modules javafx.controls app.java
// 跑步:
java --module-path D:\javafx-sdk-13.0.2\lib --add-modules javafx.controls app
它与从命令行运行任何其他 java 程序没有任何不同。 您只需进入 class app
所在的目录,然后键入以下命令: javac app.java
如果目录中只有 class。 如果有多个 java 文件,请键入javac *.java
。 然后,编译完文件后,输入 java,然后输入 class 的名称,其中包含 main 方法。 在您的情况下,这看起来像java app
。 这应该从命令行运行您的 javafx 代码。 另一方面,class 名称应遵循PascalCase命名约定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.