Как узнать во время выполнения банку, в которой существует ресурс? - PullRequest
0 голосов
/ 27 марта 2012

У меня есть изображения в моем файле JAR, и я использую также другой файл JAR, который также содержит изображения.Как я могу узнать во время выполнения файл JAR, в котором существует конкретное изображение (ресурс).

Для класса я могу использовать

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

Но в моем случае это изображение!

1 Ответ

0 голосов
/ 27 марта 2012

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();
...