Red de conocimiento informático - Conocimiento informático - ¿Cómo leer la información de los archivos MANIFEST.MF en otros archivos jar?

¿Cómo leer la información de los archivos MANIFEST.MF en otros archivos jar?

El archivo MANIFEST.MF se encuentra en el directorio META-INF/Package Path bajo el paquete 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

}

}

}

}

}

}