Maison >Java >javaDidacticiel >Comment accéder au fichier manifeste du JAR d'origine dans des environnements Applet ou Webstart ?

Comment accéder au fichier manifeste du JAR d'origine dans des environnements Applet ou Webstart ?

DDD
DDDoriginal
2024-11-19 13:45:02297parcourir

How to Access the Manifest File of the Originating JAR in Applet or Webstart Environments?

Récupération du fichier manifeste du JAR d'origine

Pour accéder au fichier manifeste du JAR qui a initié votre application, les méthodes conventionnelles comme getClass( .getClassLoader().getResources(...) peut ne pas suffire, en particulier dans des environnements tels que les applets ou les applications Webstart. Voici deux approches alternatives à considérer :

Itération à travers les URL récupérées :

  1. Utilisez getResources() pour récupérer une collection d'URL représentant des fichiers manifestes potentiels.
  2. Parcourez ces URL, en lisant chacune d'elles comme un manifeste jusqu'à ce que vous trouviez celle dont vous avez besoin.

Exemple de code :

Enumeration<URL> resources = getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
while (resources.hasMoreElements()) {
    try {
        URL url = resources.nextElement();
        Manifest manifest = new Manifest(url.openStream());
        // If manifest is null, try using JarInputStream instead: manifest = url.openStream().getManifest();

        // Verify and process the manifest as needed
        ...
    } catch (IOException e) {
        // Handle the exception
    }
}

Vérification du type de ClassLoader et utilisation de findResource() :

  1. Déterminer si getClass().getClassLoader() est une instance de java.net.URLClassLoader, généralement le cas pour les chargeurs de classe Sun , y compris AppletClassLoader.
  2. Si tel est le cas, lancez-le et utilisez findResource() pour récupérer le manifeste.

Exemple de code :

URLClassLoader cl = (URLClassLoader) getClass().getClassLoader();
try {
    URL url = cl.findResource("META-INF/MANIFEST.MF");
    Manifest manifest = new Manifest(url.openStream());
    // Do your stuff with the manifest
    ...
} catch (IOException e) {
    // Handle the 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