Nie jestem teraz przed IDE, patrzę tylko na specyfikacje API.
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
URL jar = src.getLocation();
}
Chcę ustalić, z którego pliku JAR pochodzi klasa. Czy to jest sposób na zrobienie tego?
java
jar
class
classloader
chrisaycock
źródło
źródło
java -findjar -cp /some/path/with/libs/*.jar my.java.Class
->my.jar
.Odpowiedzi:
Tak. Działa dla wszystkich klas z wyjątkiem klas ładowanych przez bootstrap classloader. Innym sposobem określenia jest:
Jak zauważył notnoop,
klass.getResource()
metoda zwraca lokalizację samego pliku klasy. Na przykład:getProtectionDomain().getCodeSource().getLocation()
Metoda zwraca lokalizację pliku jar lub CLASSPATHźródło
getProtectionDomain().getCodeSource().getLocation()
jeśli chcesz uzyskać lokalizację pliku jarSprawdź
LiveInjector.findPathJar()
od Lombok PatcherLiveInjector.java
. Zauważ, że są to specjalne przypadki, w których plik nie znajduje się w słoiku i możesz to zmienić.źródło
Posługiwać się
Jeśli zawiera wiele wpisów, wykonaj operację na podciągach.
źródło
źródło