簡體   English   中英

JavaFX 運行時 JAR 文件 jfxrt.jar 在 Linux 上的位置是什么?

[英]What's the location of the JavaFX runtime JAR file, jfxrt.jar, on Linux?

我正在嘗試使用 Eclipse Kepler 運行一些 JavaFX 代碼,並在 Linux 機器上安裝e(fx)clipse插件,使用:

java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-5)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

我的理解是,盡管自 JDK 7u6 版本起 JavaFX 已包含在標准 JDK 中,但 JavaFX 運行時 JAR 文件 jfxrt.jar 被故意排除在 Java 運行時路徑之外,直到 JavaFX 和其余 Java 基礎設施之間的進一步測試已完成。 因此,當我們創建新的 Java 項目時,您必須手動將其添加到項目構建路徑庫中。

我一直在以下兩個目錄中尋找那個 jar 沒有成功:

/usr/lib/jvm/java-7-openjdk-common/jre/lib/
/usr/lib/jvm/java-7-openjdk-amd64/lib

我還應該在哪里尋找它?

2021 年 3 月更新

此答案中的先前信息現在對於更高版本的 Java 和 JavaFX(例如 Java 11+)已過時。 此更新提供了更多最新版本的信息。

JavaFX 現在可以從openjfx.io或公共 Maven 存儲庫中作為 SDK 或庫集或模塊集獲得。 JavaFX 已被划分為一組依賴項,而不是與 Java 運行時一起分發的單一jfxrt.jar庫(例如之前使用 Oracle Java 8 的情況)。

對於 JavaFX 11+ 版本,JavaFX jar 文件(以及伴隨它們的本機庫)的位置將取決於您構建項目的方式。 例如:

  • 如果您使用 Maven 或 Gradle 等構建工具並指定 JavaFX 作為依賴項,則 JavaFX jar 文件將下載到您本地的 Maven 或 Gradle 存儲庫(與其他 maven 依賴項相同)。
  • 如果您從openjfx.io (gluon)下載 JavaFX SDK,則 JavaFX jar 文件將位於您將 SDK 解壓縮到的位置。

jfxrt.jar 在 Oracle Java 7 中的位置是:

<JRE_HOME>/lib/jfxrt.jar

jfxrt.jar 在 Oracle Java 8 中的位置是:

<JRE_HOME>/lib/ext/jfxrt.jar

<JRE_HOME>將取決於您安裝 Oracle Java 的位置,並且可能因 Linux 發行版和安裝而異。

jfxrt.jar 不在 Linux OpenJDK 7(這是您正在使用的)中。


一個開源包為基於 Debian 的系統(如 Ubuntu)提供JavaFX 8 要安裝此軟件包,必須同時安裝 Debian OpenJDK 8 軟件包和 Debian OpenJFX 軟件包。 我不運行 Debian,所以我不確定 Debian OpenJFX 包在哪里安裝 jfxrt.jar。


使用Oracle Java 8

對於 Oracle Java 8,JavaFX 既包含在 JDK 中,又位於默認類路徑中。 這意味着編譯器會在構建期間和運行時自動找到 JavaFX 類,當您的用戶使用您的應用程序時。 因此,目前使用 Oracle Java 8 是您問題的最佳解決方案。

適用於 Java 8 的 OpenJDK 可能包含 JavaFX(因為適用於 Java 8 的 JavaFX 現在是開源的),但是這將取決於 OpenJDK 包組裝商是否選擇在其發行版中包含 JavaFX 8。 我希望他們這樣做,因為它應該有助於消除您在問題中遇到的困惑,並且它還在 OpenJDK 中提供了更多功能。

我的理解是,盡管自 JDK 7u6 版本以來 JavaFX 已包含在標准 JDK 中

是的,但僅限於 Oracle JDK。

與 Java 7 捆綁在一起的 JavaFX 版本不是完全開源的,因此它不能包含在 OpenJDK(這是您正在使用的)中。

如果您需要使用 Java 7 而不是 Java 8,您可以下載適用於 Java 7Oracle JDK並使用它。 然后 JavaFX 將包含在 Java 7 中。由於 Oracle 配置 Java 7 的方式,JavaFX 不會出現在類路徑中。 如果您使用 Java 7,您需要將它添加到您的類路徑並使用適當的 JavaFX 打包工具來允許您的用戶運行您的應用程序。 一些工具(例如 e(fx)clipse 和 NetBeans JavaFX 項目類型)將為您處理類路徑問題和打包任務。

在帶有 OpenJDK 的 Ubuntu 上,它安裝在/usr/lib/jvm/default-java/jre/lib/ext/jfxrt.jar (從技術上講它是/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar的符號鏈接/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar ,但最好使用default-java鏈接)

當我使用apt install openjfx openjfx 安裝 JavaFX 時,我的位於 Ubuntu 18.04 上(正如上面@jewelsea 已經指出的)

/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar

jfxrt.jar 在 JDK 1.8 (Windows) 中的位置是:

C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar

暫無
暫無

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

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