下面的实时代码通过ivy依赖项报告 XML 文件进行解析,并从其中的 jar 中提取所有文件,希望对您有所帮助:
private void extract(String path2, String outPath) {
JarFile zf = null;
try {
zf = new JarFile(path2);
} catch (IOException e4) {
// according to http://stackoverflow.com/a/470492/783412, set the
// logger to log these events
System.setProperty("java.util.logging.ConsoleHandler.level",
"FINER");
logger.throwing(
Thread.currentThread().getStackTrace()[1].getClassName(),
Thread.currentThread().getStackTrace()[1].getMethodName(),
e4);
// according to
// http://stackoverflow.com/questions/4970513/java-logging-levels-confusion,
// the default logging level is INFO
System.setProperty("java.util.logging.ConsoleHandler.level", "INFO");
}
if (zf == null) {
System.err.println(path2 + " is an invalid jar, skipping");
return;
}
Enumeration<JarEntry> ze = (Enumeration<JarEntry>) zf.entries();
while (ze.hasMoreElements()) {
JarEntry thisEntry = ze.nextElement();
System.err.println(thisEntry.getName());
if (thisEntry.isDirectory()) {
new File(outPath + File.separator + thisEntry.getName())
.mkdirs();
} else {
String filename = thisEntry.getName();
if (filename.endsWith("RSA") || filename.endsWith("DSA") || filename.endsWith("SF")) continue;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(outPath + File.separator
+ filename);
} catch (FileNotFoundException e3) {
// according to http://stackoverflow.com/a/470492/783412,
// set the logger to log these events
System.setProperty(
"java.util.logging.ConsoleHandler.level", "FINER");
logger.throwing(Thread.currentThread().getStackTrace()[1]
.getClassName(), Thread.currentThread()
.getStackTrace()[1].getMethodName(), e3);
// according to
// http://stackoverflow.com/questions/4970513/java-logging-levels-confusion,
// the default logging level is INFO
System.setProperty(
"java.util.logging.ConsoleHandler.level", "INFO");
}
BufferedInputStream zis = null;
try {
zis = new BufferedInputStream(zf.getInputStream(thisEntry));
} catch (IOException e2) {
// according to http://stackoverflow.com/a/470492/783412,
// set the logger to log these events
System.setProperty(
"java.util.logging.ConsoleHandler.level", "FINER");
logger.throwing(Thread.currentThread().getStackTrace()[1]
.getClassName(), Thread.currentThread()
.getStackTrace()[1].getMethodName(), e2);
// according to
// http://stackoverflow.com/questions/4970513/java-logging-levels-confusion,
// the default logging level is INFO
System.setProperty(
"java.util.logging.ConsoleHandler.level", "INFO");
}
try {
fos = new FileOutputStream(outPath + File.separator
+ thisEntry.getName());
} catch (FileNotFoundException e1) {
// according to http://stackoverflow.com/a/470492/783412,
// set the logger to log these events
System.setProperty(
"java.util.logging.ConsoleHandler.level", "FINER");
logger.throwing(Thread.currentThread().getStackTrace()[1]
.getClassName(), Thread.currentThread()
.getStackTrace()[1].getMethodName(), e1);
// according to
// http://stackoverflow.com/questions/4970513/java-logging-levels-confusion,
// the default logging level is INFO
System.setProperty(
"java.util.logging.ConsoleHandler.level", "INFO");
}
byte[] b = new byte[new Long(thisEntry.getSize()).intValue()];
try {
zis.read(b);
} catch (IOException e1) {
// according to http://stackoverflow.com/a/470492/783412, set the logger to log these events
System.setProperty("java.util.logging.ConsoleHandler.level","FINER");
logger.throwing(Thread.currentThread().getStackTrace()[1].getClassName(), Thread.currentThread().getStackTrace()[1].getMethodName(), e1);
// according to http://stackoverflow.com/questions/4970513/java-logging-levels-confusion, the default logging level is INFO
System.setProperty("java.util.logging.ConsoleHandler.level", "INFO");
}
try {
.getClassName(), Thread.currentThread()
.getStackTrace()[1].getMethodName(), e1);
// according to
// http://stackoverflow.com/questions/4970513/java-logging-levels-confusion,
// the default logging level is INFO
System.setProperty(
"java.util.logging.ConsoleHandler.level", "INFO");
}
byte[] b = new byte[new Long(thisEntry.getSize()).intValue()];
try {
zis.read(b);
} catch (IOException e1) {
// according to http://stackoverflow.com/a/470492/783412, set the logger to log these events
System.setProperty("java.util.logging.ConsoleHandler.level","FINER");
logger.throwing(Thread.currentThread().getStackTrace()[1].getClassName(), Thread.currentThread().getStackTrace()[1].getMethodName(), e1);
// according to http://stackoverflow.com/questions/4970513/java-logging-levels-confusion, the default logging level is INFO
System.setProperty("java.util.logging.ConsoleHandler.level", "INFO");
}
try {
fos.write(b);
} catch (IOException e1) {
// according to http://stackoverflow.com/a/470492/783412, set the logger to log these events
System.setProperty("java.util.logging.ConsoleHandler.level","FINER");
logger.throwing(Thread.currentThread().getStackTrace()[1].getClassName(), Thread.currentThread().getStackTrace()[1].getMethodName(), e1);
// according to http://stackoverflow.com/questions/4970513/java-logging-levels-confusion, the default logging level is INFO
System.setProperty("java.util.logging.ConsoleHandler.level", "INFO");
}
try {
fos.close();
} catch (IOException e) {
// according to http://stackoverflow.com/a/470492/783412,
// set the logger to log these events
System.setProperty(
"java.util.logging.ConsoleHandler.level", "FINER");
logger.throwing(Thread.currentThread().getStackTrace()[1]
.getClassName(), Thread.currentThread()
.getStackTrace()[1].getMethodName(), e);
// according to
// http://stackoverflow.com/questions/4970513/java-logging-levels-confusion,
// the default logging level is INFO
System.setProperty(
"java.util.logging.ConsoleHandler.level", "INFO");
}
}
}
}