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!