[英]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
筆記:
- 我不知道
module-info.java
是什么或做什么。- 當我使用 CLI 編譯 IntelliJ 為 JavaFX 項目生成的代碼時,它在運行時失敗(更具體地說,在加載 FXML 時),因為它似乎只能在
out
文件夾中找到它(我使用getClass( ).getResource()和getClass().getClassLoader().getResource() )
為了解決這個問題,您可以在out
文件夾中的某處移動/復制 .fxml 文件,並在代碼中為 FXMLLoader 設置正確的路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.