簡體   English   中英

如何獲取在 webstart 上運行的 Java 應用程序的類路徑?

[英]How to get the classpath of a Java application running on webstart?

我通過 webstart 部署的 Java 應用程序調用了一個輔助應用程序。 我想在與主應用程序具有相同類路徑的單獨 JVM 中啟動輔助應用程序。

在沒有webstart 的情況下,系統ClassLoader提供了答案。 使用webstart,系統ClassLoader提供deploy.jar的路徑。

我找到了這個,但它似乎已經過時了。 它指的是內部 API com.sun.deploy.cache.Cache上的至少一種方法,該方法已從 Java 8u60 中消失。 也許還有另一種方式。

很抱歉,但搜索緩存僅在未下載 jws 應用程序的新更新時才有效。 類路徑將包含對具有舊版本和新版本的所有目錄的引用。

為此,我使用了從 jws 應用程序調用的 C++-dll

HMODULE thisDll = GetModuleHandle(TEXT("MyDll.dll"));
    ::GetModuleFileName(thisDll, currentDir, sizeof(currentDir));
_splitpath(currentDir, Ldrive, Ldirpath, Lfname, Lext);
sprintf(currentDir,"%s%s",Ldrive,Ldirpath);

之后,我解析 currentDir 以查找所有 jar 文件。

這是(在 Jython 中)適用於 Java 8u66 的東西。 顯然,我更喜歡不依賴於內部 API 的解決方案。 但是,也許那是不可用的。

import com.sun.deploy.cache.Cache as Cache
import traceback
classPath = []
for indexFile in Cache.getCacheEntries(False):
    try:
        cacheEntry = Cache.getCacheEntryFromFile(indexFile)
        jarFile = cacheEntry.getJarFile()
        if jarFile is not None:
            classPath.append(jarFile.getName())
    except:
        traceback.print_exc()

暫無
暫無

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

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