![](/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.