Não estou na frente de um IDE agora, apenas olhando as especificações da API.
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
URL jar = src.getLocation();
}
Quero determinar de qual arquivo JAR uma classe é. É assim que se faz?
java
jar
class
classloader
chrisaycock
fonte
fonte
java -findjar -cp /some/path/with/libs/*.jar my.java.Class
->my.jar
.Respostas:
Sim. Ele funciona para todas as classes, exceto as carregadas pelo carregador de classes de autoinicialização. A outra maneira de determinar é:
Como notnoop apontou, o
klass.getResource()
método retorna a localização do próprio arquivo de classe. Por exemplo:O
getProtectionDomain().getCodeSource().getLocation()
método retorna o local do arquivo jar ou CLASSPATHfonte
getProtectionDomain().getCodeSource().getLocation()
se você deseja obter a localização em arquivo jarFaça o checkout
LiveInjector.findPathJar()
do Lombok PatcherLiveInjector.java
. Observe que existem casos especiais em que o arquivo não está em um jarro e você pode alterar isso.fonte
Usar
Se isso contiver várias entradas, faça alguma operação de substring.
fonte
fonte