No estoy frente a un IDE en este momento, solo estoy mirando las especificaciones de la API.
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
URL jar = src.getLocation();
}
Quiero determinar de qué archivo JAR es una clase. ¿Es esta la manera de hacerlo?
java
jar
class
classloader
chrisaycock
fuente
fuente
java -findjar -cp /some/path/with/libs/*.jar my.java.Class
->my.jar
.Respuestas:
Si. Funciona para todas las clases, excepto las clases cargadas por el cargador de clases bootstrap. La otra forma de determinar es:
Como notnoop señaló, el
klass.getResource()
método devuelve la ubicación del archivo de clase en sí. Por ejemplo:El
getProtectionDomain().getCodeSource().getLocation()
método devuelve la ubicación del archivo jar o CLASSPATHfuente
getProtectionDomain().getCodeSource().getLocation()
si desea obtener la ubicación del archivo jarEcha un vistazo a la
LiveInjector.findPathJar()
de Lombok PatcherLiveInjector.java
. Tenga en cuenta que se trata de casos especiales en los que el archivo no vive realmente en un jar, y es posible que desee cambiar eso.fuente
Utilizar
Si esto contiene varias entradas, realice alguna operación de subcadena.
fuente
fuente