Ich bin gerade nicht vor einer IDE, sondern schaue mir nur die API-Spezifikationen an.
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
URL jar = src.getLocation();
}
Ich möchte feststellen, aus welcher JAR-Datei eine Klasse stammt. Ist das der Weg, es zu tun?
java
jar
class
classloader
Chrisaycock
quelle
quelle
java -findjar -cp /some/path/with/libs/*.jar my.java.Class
->my.jar
.Antworten:
Ja. Es funktioniert für alle Klassen außer Klassen, die vom Bootstrap-Klassenladeprogramm geladen werden. Der andere Weg zu bestimmen ist:
Wie notnoop hervorhob,
klass.getResource()
gibt die Methode den Speicherort der Klassendatei selbst zurück. Beispielsweise:Die
getProtectionDomain().getCodeSource().getLocation()
Methode gibt den Speicherort der JAR-Datei oder von CLASSPATH zurückquelle
getProtectionDomain().getCodeSource().getLocation()
Sie diese Option, wenn Sie den Speicherort der JAR-Datei ermitteln möchtenKasse der
LiveInjector.findPathJar()
von Lombok PatcherLiveInjector.java
. Beachten Sie, dass es sich um Sonderfälle handelt, in denen die Datei nicht in einem Glas gespeichert ist, und dass Sie dies möglicherweise ändern möchten.quelle
Verwenden
Wenn dies mehrere Einträge enthält, führen Sie eine Teilzeichenfolgenoperation aus.
quelle
quelle