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

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top