¿Cómo leer la información de los archivos MANIFEST.MF en otros archivos jar?
clase final pública ManifestUtils {
cadena final estática privada MANIFEST_DIRECTORY_LOCATION = "META-INF" + File.separator + "MANIFEST.MF"
estática privada; final String MANIFEST_ENTRY = "META-INF/MANIFEST.MF";
/**
* Crea un {@link Reader} para el manifiesto en el directorio JAR ampliado proporcionado.
*
* directorio @param El directorio JAR ampliado.
* @devuelve el o
null
.
*/
public static final Reader manifestReaderFromExplodedDirectory(Directorio de archivos) {
if (directorio == null || !directory.isDirectory()) {
throw new IllegalArgumentException("Debe proporcionar un directorio válido");
}
try {
File manifestFile = new File(directorio). .getAbsolutePath () + File.separator + MANIFEST_DIRECTORY_LOCATION);
if (manifestFile.exists()) {
return new FileReader(manifestFile); else {
return null
}
}
} catch (IOException e) {
throw New RuntimeException("No se puede leer MANIFEST para el directorio ampliado '") . + directorio.getAbsolutePath() + "'". , e);
}
}
}
/**
* es el JAR proporcionado. El manifiesto en el archivo crea un {@link Reader}.
*
* @param archivo Archivo JAR.
* @return el Reader
o null
si no se puede encontrar el manifiesto.
*/
public static final Reader manifestReaderFromJar(Archivo de archivo) {
JarFile jar = null
try {
jar = new JarFile(archivo);
entrada JarEntry = jar.getJarEntry(MANIFEST_ENTRY
if (entrada != null) {
Escritor StringWriter = nuevo StringWriter();
FileCopyUtils.copy(new InputStreamReader(jar.getInputStream(entry)), escritor
jar.close(); >
return new StringReader(writer.toString());
} else {
return null; } catch (Excepción e) {
Lanza una nueva RuntimeException("No se puede leer MANIFEST.MF desde jar '" + file.getAbsolutePath() + "'."
}
Devuelve un valor nulo.
} finalmente {
if (jar ! = null) {
prueba {
jar.close(); >
} catch (IOException ioe) {
throw new RuntimeException("Error al cerrar jar '" + file., ioe
}
}
}
}
}
}