Mudar classpath em tempo de execução

1 resposta
F

Galera é o seguinte, estou fazendo uma aplicação e tenho que adicionar classes ou jars em tempo de execução. Li na última edição da JavaMagazine como fazer isso, só que não está dando certo.

Vejam só:

System.out.println("Classpath Antes: "+System.getProperty("java.class.path")); System.setProperty("java.class.path",System.getProperty("java.class.path")+";Z:\\Teste\\GerenciaMail.jar"); System.out.println("Classpath Depois: "+System.getProperty("java.class.path")); Class cls = Class.forName("mailManager.Correio");

Adicionei o GerenciaMail.jar no classpath e tentei criar um objeto do tipo Class usando o Class.forName(“mailManager.Correio”);

O que apareceu no console foi o seguinte:

[color=red]Classpath Antes: Z:\Projetos\pro_tcc\classes;Z:\Projetos\pro_tcc\lib\visuallib.jar;Z:\Projetos\pro_tcc\lib\JLink.jar

Classpath Depois: Z:\Projetos\pro_tcc\classes;Z:\Projetos\pro_tcc\lib\visuallib.jar;Z:\Projetos\pro_tcc\lib\JLink.jar;Z:\Teste\GerenciaMail.jar

java.lang.ClassNotFoundException: mailManager.Correio

at java.net.URLClassLoader$1.run(URLClassLoader.java:199)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:187)

at java.lang.ClassLoader.loadClass(ClassLoader.java:289)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)

at java.lang.ClassLoader.loadClass(ClassLoader.java:235)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:141)

at frb.tcc.teste.gui.Teste.main(Teste.java:28)

Exception in thread main [/color]

O que eu tenho que fazer para poder “enxergar” essa classe?
Tem alguma relação com ClassLoader (não entendo bem)?

Grato desde já

1 Resposta

danieldestro

Use classloaders: http://www.guj.com.br/posts/list/19913.java

Criado 17 de fevereiro de 2005
Ultima resposta 30 de mar. de 2005
Respostas 1
Participantes 2