Вот моя попытка найти каталог, из которого работает jar.
public class JarLocation {
public static void main(String[] args) {
new JarLocation().say();
}
public void say() {
String className = this.getClass().getName().replace('.', '/');
String classJar =
this.getClass().getResource("/" + className + ".class").toString();
if (classJar.startsWith("jar:")) {
System.out.println("*** running from jar!");
}
javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
null, classJar, "jar location",
javax.swing.JOptionPane.DEFAULT_OPTION);
}
}
Сначала я строю «путь» текущего класса, заменяя «.» по "/", тогда я получаю .class в качестве ресурса. Метод toString () возвращает что-то вроде:
jar:file:/C:/temp/testing.jar!/my/package/JarLocation.class
Оттуда вы анализируете данную строку, чтобы получить каталог, в котором находится банка.