Je ne suis pas devant un IDE pour le moment, je regarde juste les spécifications de l'API.
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
URL jar = src.getLocation();
}
Je veux déterminer de quel fichier JAR provient une classe. Est-ce la manière de procéder?
java
jar
class
classloader
chrisaycock
la source
la source
java -findjar -cp /some/path/with/libs/*.jar my.java.Class
->my.jar
.Réponses:
Oui. Cela fonctionne pour toutes les classes sauf les classes chargées par le chargeur de classe bootstrap. L'autre façon de déterminer est:
Comme notnoop l'a souligné, la
klass.getResource()
méthode renvoie l'emplacement du fichier de classe lui-même. Par exemple:La
getProtectionDomain().getCodeSource().getLocation()
méthode renvoie l'emplacement du fichier jar ou CLASSPATHla source
getProtectionDomain().getCodeSource().getLocation()
si vous voulez obtenir l'emplacement du fichier jarVérifiez le
LiveInjector.findPathJar()
de Lombok PatcherLiveInjector.java
. Notez qu'il s'agit de cas particuliers où le fichier ne vit pas réellement dans un fichier jar, et vous voudrez peut-être changer cela.la source
Utilisation
Si cela contient plusieurs entrées, effectuez une opération de sous-chaîne.
la source
la source