Если JAR находится не в пути к классам, а в обычном файле в файловой системе, вы можете использовать TrueZIP 7 для выполнения этой работы:
Сначала настройте TrueZIP так, чтобы модуль truezip-driver-zip находился в пути класса времени выполнения. Затем подайте следующий код для ваших конкретных потребностей:
TFile jar = new TFile("path/to/my.jar"); // a subclass of java.io.File
if (jar.isDirectory()) // true for regular directories and JARs if truezip-driver-zip is on your run time class path
for (TFile entry : jar.listFiles()) { // iterate top level directory
if ("log4j.xml".equals(entry.getName())) {
// Bingo! Now read the file or write it
InputStream in = new TFileInputStream(entry);
try {
... // do something here
} finally {
in.close();
}
} else if (entry.isDirectory()) {
... // use recursion to continue searching in this directory
}
}
С уважением,
Christian