Localização da classe atualmente em execução ou arquivo JAR

Eu tenho umLotus Notes database que está executando alguma interação com um serviço da Web remoto. Eu escrevi uma classe Java personalizada para executar a interação.

Os métodos de classe podem ser executados em um dos três locais, dependendo da configuração do usuário:

Em uma biblioteca de scripts Java chamada por meio de um agente Java do Lotus Notes Dentro de um arquivo JAR localizado no diretório "jvm / lib / ext" do usuário Dentro de um arquivo JAR localizado em um diretório customizado no diretório "jvm / lib" do usuário (por exemplo, "jvm / lib / custom_dir"). A JVM do Lotus Notes conhece o diretório customizado por meio do uso da variável local notes.ini "JavaUserClassesExt".

Dentro da minha classe, eu simplesmente gostaria de poder retornar o local em que a classe atual está executando. Portanto, se estiver executando a partir da opção 2 ou 3, retorne o caminho do arquivo JAR. Se estiver executando a partir da opção 1, retorne outra coisa com a qual eu possa lida

Eu tentei o seguinte.

étodo @getProtectionDomain ()
getClass().getProtectionDomain().getCodeSource().getLocation()

O que resulta em

java.security.AccessControlException: Access denied (java.lang.RuntimePermission getProtectionDomain)

Não há opção para alterar nenhuma configuração de segurança em nenhum cliente executando iss

Método Class.getResource
String myName = "/" + getClass().getName().replace('.', '/') + ".class";
URL myResourceURL = getClass().getResource(myName);

Resultado myResourceURL SEMPRE é nulo.

ClassLoader.getResource method
String myName2 = getClass().getName().replace('.', '/') + ".class";
ClassLoader myCL = getClass().getClassLoader();
URL myResourceURL2 = myCL.getResource(myName);

Resultado myResourceURL2 SEMPRE é nulo.

a) Onde estou errado acima?

b) como obtenho a localização da classe em execução no momento usando um método diferent

questionAnswers(3)

yourAnswerToTheQuestion