0
我有我的jar文件中的圖像,我也使用另一個jar文件,也有圖像。 如何在運行時知道存在特定映像(資源)的jar文件。如何在運行時知道存在資源的jar?
對於一類,我可以使用
getClass().getProtectionDomain().getCodeSource().getLocation()
但在我的情況下,它是一個形象!
我有我的jar文件中的圖像,我也使用另一個jar文件,也有圖像。 如何在運行時知道存在特定映像(資源)的jar文件。如何在運行時知道存在資源的jar?
對於一類,我可以使用
getClass().getProtectionDomain().getCodeSource().getLocation()
但在我的情況下,它是一個形象!
資源的URL格式爲jar:url-of-jar-file!entry-path
。忽略錯誤檢查:
URL resURL = getClassLoader().getResource(resName);
// ==> resURL = jar:ORIGINAL_URL!resName
String path = resURL.getPath();
// ==> path = ORIGINAL_URL!resName
URL jarURL = new URL(path.substring(0, path.indexOf('!'));
// ==> jarURL = ORIGINAL_URL
如果你能負擔得起創建則可以選擇做一個連接:
JarURLConnection conn = (JarURLConnection) resUrl.openConnection();
URL jarURL = conn.getJarFileURL();
爲什麼你(想你)需要知道的位置?我使用'this.getClass()。getResource(「path/name.type」)在應用程序的運行時類路徑中加載了來自Jars的圖像,HTML,CSS,文本文件,XML和其他大量內容。 '獲取一個URL。如果它是一個applet或JWS應用程序。該URL將始終***指向它來自的服務器,即使它本地緩存。這是出於安全原因。簡而言之,我已經使用這些URL提供給其他方法(例如'ImageIO.read(URL)'),而無需檢查或「知道」它指向的位置。 – 2012-03-27 08:01:40
他爲什麼要這樣做,爲什麼這麼重要? – 2012-03-27 08:06:12
我的應用程序需要知道該jar,並基於該操作需要以不同的方式採取行動。 – user1053792 2012-03-27 08:10:59