簡體   English   中英

如何禁用Java擴展機制

[英]How to disable Java extension mechanism

我們的產品是一個用Java編寫的獨立OS X桌面應用程序。 我們包含一個嵌入式JRE來運行我們的軟件。

JRE啟動的規則似乎在我們在類路徑上明確包含的庫之前將任何JAR文件放在類路徑上的/usr/lib/java/Library/Java/Extensions~/Library/Java/Extensions

如果用戶在任何Java擴展機制文件夾中都有任何JAR文件,那么這些JAR文件將添加到我們的類路徑中。 最近出現了一個支持事件,因為客戶在/usr/lib/java有一個舊版本的關鍵第三方庫 - 這導致我們的軟件在啟動時意外崩潰。

在調用我們的應用程序中嵌入的JRE時,我無法確定如何禁用此擴展機制。 我怎樣才能做到這一點?

─────────
注意:似乎不推薦使用此擴展機制,並最終將其刪除: https//blogs.oracle.com/java-platform-group/entry/planning_safe_removal_of_under

您可以覆蓋"java.ext.dirs" JVM參數以指向某個應用程序目錄。

我測試了覆蓋JVM參數,它工作正常。

$ ls /Library/Java/Extensions
extentionstest.jar
$
$java ExtentionTest
Main method executed fine.
$
$ java -Djava.ext.dirs=/home/pratapk/work/ ExtentionTest
Error: Could not find or load main class ExtentionTest
$ 

ExtentionTest類內置於extentionstest.jar並在/Library/Java/Extensions復制

public class ExtentionTest {
    public static void main(String args[] ) {
        System.out.println("Main method executed fine.");
    }
}

java.ext.dirs支持多個目錄作為冒號分隔。 在您的情況下, JRE與您的應用程序一起包含在內,您可以更輕松地包含lib/ext的路徑,而不包括"/Library/Java/Extensions"

暫無
暫無

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

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