problema de carregamento dinâmico quando executa programa de um frasco
-
05-07-2019 - |
Pergunta
Eu tenho um aplicativo que é extensível através de classes Java que estejam em conformidade com uma determinada interface. Se eu executar o programa a partir das classes de linha de comando, eu sou capaz de instanciar o add-on classes usando:
Class.forName("myAddon").newInstance();
No entanto, se eu jar da aplicação (definindo a classe principal corretamente), recebo uma classe não encontrada exceção. Alguém pode lançar alguma luz sobre o que está acontecendo aqui?
TIA, Adam
Solução
Eu consegui começar este trabalho usando um URLClassLoader, especificando o caminho de busca para ser o diretório atual da seguinte forma:
URLClassLoader cl = new URLClassLoader(new URL[] {new File(".").toURI().toURL()});
Obrigado por toda sua ajuda,
Adam
Outras dicas
A classe que você está procurando não está no classpath. Se a sua em um diretório
i. MyClass.class MyJar.jar
Você precisa fazer:
java -classpath . -jar MyJar.jar
Mas realmente precisamos de mais informações para responder à pergunta. Qual é o principal conjunto de classe para no manifesto jar? Qual é o seu classpath? Como você especificar qual classe de carga?