如何在运行时知道资源所在的jar?

时间:2012-03-27 07:50:12

标签: java jar classloader

我的jar文件中有一个图像,我还使用另一个也有图像的jar文件。 如何在运行时知道存在特定图像(资源)的jar文件。

对于课程,我可以使用

   getClass().getProtectionDomain().getCodeSource().getLocation()

但就我而言,这是一张图片!

1 个答案:

答案 0 :(得分:0)

资源的网址格式为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();