Zugriff auf die Manifestdatei einer JAR in dynamischen Umgebungen
Das Abrufen der Manifestdatei einer JAR wird zu einer Herausforderung, wenn die Anwendung aus dynamischen Umgebungen gestartet wird wie Applets oder Webstart. Der Standardansatz mit getClass().getClassLoader().getResources(...) gibt das Manifest aus der ersten in die Laufzeit geladenen JAR zurück, nicht aus der JAR, die die Zielklasse hostet.
Um dies zu umgehen, gibt es zwei Methoden kann erkundet werden:
1. Durch Ressourcen-URLs iterieren:
Durchlaufen Sie die von getResources() zurückgegebenen URLs und lesen Sie jede als Manifest, bis die gewünschte gefunden wird.
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. Verwenden Sie die findResource-Methode:
Wenn der Klassenlader eine Instanz von java.net.URLClassLoader ist (z. B. AppletClassLoader), wandeln Sie ihn um und rufen Sie findResource() direkt auf, was bekanntermaßen das Manifest für Applets zurückgibt .
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. }
Das obige ist der detaillierte Inhalt vonWie greife ich in dynamischen Umgebungen auf die Manifestdatei einer JAR zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!