簡體   English   中英

如何在 Linux 機器上編譯使用 JavaFx 的 Java 源代碼(使用 javac 11.0.13)?

[英]How to compile a Java source code (using javac 11.0.13) that uses JavaFx on a Linux machine?

該行import javafx.application.Application; 給我以下編譯時錯誤:
error: package javafx.application does not exist

我正在使用 Linux Lite 5.6(Ubuntu 20.04)和java --version給我:

openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment Corretto-11.0.13.8.1 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.13.8.1 (build 11.0.13+8-LTS, mixed mode)

我以為 JavaFX 與 Java SDK 一起出現,但自 JDK 11 以來似乎並非如此。
In order to compile and run JavaFX apps, the JavaFX SDK (which no longer comes together with the Java SDK) is required.


為了能夠編譯和運行 JavaFX 應用程序,需要遵循以下步驟:

步驟 1. 檢查您是否已經安裝了 Java

您可以通過在終端中運行java --version來檢查是否安裝了 Java。 output 應該是這樣的:

 openjdk 17.0.1 2021-10-19 OpenJDK Runtime Environment (build 17.0.1+12-39) OpenJDK 64-Bit Server VM (build 17.0.1+12-39, mixed mode, sharing)

如果您得到與此類似的 output(請注意,您可以安裝不同的版本),然后繼續執行步驟 3。
如果您收到一個錯誤,這可能意味着您沒有安裝 Java,您需要安裝它。 go 下一步

步驟 2. 安裝/下載 Java

您可以在此處找到 Java SDK 進行下載。
單擊JDK 17
Builds中選擇並下載適合您系統的版本。
將其保存在系統的某個位置。 我將使用~/Programs

建議您也檢查文件的總和。

為此,請下載您選擇的 Java 版本旁邊的sha256文件,並將其保存在您保存 Java 存檔的位置。

打開終端或使用現有終端並cd到您下載 Java 存檔和 .sha256 文件的位置。

目前我正在寫這篇文章,Linux/x64 的sha256不包含文件名。

您可以編輯.sha256文件並在第一行,校驗和之后添加 2 個空格,后跟您下載的 Java 存檔的名稱
你可以運行echo " <name/of/java/archive>" | tee --append <name/of/.sha256/file> echo " <name/of/java/archive>" | tee --append <name/of/.sha256/file>
實現這一目標

它應該像這樣1c0a73cbb863aad579b967316bf17673b8f98a9bb938602a140ba2e5c38f880a openjdk-17.0.1_linux-x64_bin.tar.gz

然后運行
sha256sum -c <name/of/java/archive>
(在我的例子中,名字是openjdk-17.0.1_linux-x64_bin.tar.gz

或者,如果您不想編輯文件,則可以運行
test $(sha256sum <name/of/java/archive> | awk '{print $1}') = $(cat <name/of/.sha256/file>) && echo OK

第一種方法中的 output 應該是<name/of/java/archive>: OK而第二種方法應該是OK

使用命令tar -xvzf <name/of/java/archive>提取存檔

Go 到通過提取文件創建的目錄,在我的例子中是jdk-17.0.1
並運行./bin/java --version以檢查 java 是否已正確下載並且可以正常工作。

現在您可以在任何地方使用 java 和 javac 命令,或者您可以在步驟 3中使用 go。

方法一:別名

添加

alias javac="<path/to/jdk>/bin/javac" alias java="<path/to/jdk>/bin/java"

~/.bashrc (或等效的,取決於您的發行版/shell)

方法二:將bin文件夾加入PATH環境變量

添加
export PATH=$PATH:<path/to/jdk>/bin
~/.bashrc (或等效的,取決於您的發行版/shell)

步驟 3. 安裝/下載 JavaFX

Go在這里,前往下載部分,選擇適合您系統的 SDK 並下載。 最終檢查 sha256 總和。

使用unzip <archive/name>提取存檔

為簡單起見,您可以添加別名來編譯和運行 JavaFX 應用程序。 我正在使用以下內容:

 alias java='/home/kamui/Programs/jdk-17.0.1/bin/java' alias javac='/home/kamui/Programs/jdk-17.0.1/bin/javac' alias javafx='java --module-path /home/kamui/Programs/javafx-sdk-17.0.1/lib --add-modules javafx.controls,javafx.fxml' alias javafxc='javac --module-path /home/kamui/Programs/javafx-sdk-17.0.1/lib --add-modules javafx.controls,javafx.fxml'

注意不用javafx.fxml不需要添加

步驟 4. 編譯並運行

單一源代碼文件

對於單個源代碼文件,例如 HelloFX.java,您可以運行以下命令:

 # make sure you are in the directory where HelloFX.java is located javafxc HelloFX.java # to compile it javafx HelloFX # to run it

這些步驟的來源,您還可以在其中找到 HelloFX.java 文件是https://openjfx.io/openjfx-docs/#install-javafx

多個源代碼文件

對於更復雜的目錄結構,比如這個(這正是 IntelliJ 在您創建新的 JavaFX 項目時提供的),您可以執行以下操作:

確保您位於src所在的文件夾中。

編譯:
javafxc -d./out -sourcepath src/ src/main/java/com/example/a7/HelloApplication.java

運行:
javafx -classpath./out com.example.a7.HelloApplication筆記:

  1. 我不知道module-info.java是什么或做什么。
  2. 當我使用 CLI 編譯 IntelliJ 為 JavaFX 項目生成的代碼時,它在運行時失敗(更具體地說,在加載 FXML 時),因為它似乎只能在out文件夾中找到它(我使用getClass( ).getResource()getClass().getClassLoader().getResource() )
    為了解決這個問題,您可以在out文件夾中的某處移動/復制 .fxml 文件,並在代碼中為 FXMLLoader 設置正確的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM