Maison >Java >javaDidacticiel >Comment accéder au fichier manifeste d'un JAR dans des environnements dynamiques ?

Comment accéder au fichier manifeste d'un JAR dans des environnements dynamiques ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-13 13:47:02711parcourir

How to Access the Manifest File of a JAR in Dynamic Environments?

Accès au fichier manifeste d'un JAR dans des environnements dynamiques

Récupérer le fichier manifeste d'un JAR devient difficile lorsque l'application est lancée à partir d'environnements dynamiques comme les applets ou Webstart. L'approche standard utilisant getClass().getClassLoader().getResources(...) renvoie le manifeste du premier JAR chargé dans le runtime, pas celui hébergeant la classe cible.

Pour surmonter cela, deux méthodes peuvent être explorés :

1. Parcourez les URL de ressources :

Parcourez les URL renvoyées par getResources(), en lisant chacune comme un manifeste jusqu'à ce que celle souhaitée soit trouvée.

Enumeration<URL> resources = getClass().getClassLoader()
    .getResources("META-INF/MANIFEST.MF");
while (resources.hasMoreElements()) {
    try {
        Manifest manifest = new Manifest(resources.nextElement().openStream());
        // Check if it's the target manifest and perform necessary actions.
    } catch (IOException E) {
        // Handle exception.
    }
}

2. Utiliser la méthode findResource :

Si le chargeur de classe est une instance de java.net.URLClassLoader (comme AppletClassLoader), lancez-le et appelez directement findResource(), qui est connu pour renvoyer le manifeste pour les applets .

URLClassLoader cl = (URLClassLoader) getClass().getClassLoader();
try {
    URL url = cl.findResource("META-INF/MANIFEST.MF");
    Manifest manifest = new Manifest(url.openStream());
    // Use the manifest.
} catch (IOException E) {
    // Handle exception.
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn