estou com o seguinte dilema, preciso criar um atualizador para duas aplicações que fiz aqui no meu trabalho, as duas app’s tem uma classe chamada Programa onde guardo suas versões e seus nomes… a princípio, queria que meu atualizador ao ser chamado pegasse o JAR da app e fosse até a classe programa e buscasse o atributo da versao… OK até a parte de como ele vai pegar os dados eu sei, o detalhe é como vou carregar o JAR em Runtime…
Gostaria de saber se alguem ja fez isso ou se sabe como fazer, pois preciso dos dados desta classe para comparar com os dados da mesma classe porem na versao no va da app… por exemlo:
Se você tiver o JAR do cliente no seu classpath, basta carregar a classe com Class.forName() e usar reflection para ver o conteúdo do campo. Isso é aplicável no seu caso?
UMC
se tiver no NetBenas va no projeto q vc quer chamar o jar ve Biblioteca btn dto do mouse ! Add JAR
quando for chamar uma classe vc usa os IMPORTS !!
vlw
abs
gregorioarthur
UMC:
se tiver no NetBenas va no projeto q vc quer chamar o jar ve Biblioteca btn dto do mouse ! Add JAR
quando for chamar uma classe vc usa os IMPORTS !!
vlw
abs
nao nao, isso eu sei como faz, mas ele não será um Lib do projeto. vlew.
no caso assim, eu tenho jar mas ele nao vai estar no classpath, pensa assim:
nesse esquema ai de cima, os dois estarão na mesma pasta nao no classpth um do outro ou so do atualizador (que é o q precisa pegar informacoes do JAR da aplicação.)
oq preciso mesmo saber, eh como carregar o JAR na aplicação sem tê-lo no lib da outra aplicação, tipo o getResource()
Extreme Paint Insane! eahaeuaehuaehueau
vlew!
gregorioarthur
Opá!
entao, descobri esse pacote “java.util.jar” que tem um classe chamada JarInputStream…
será que com ela tem como fazer oq quero?
alguem já usou, sabe usar?
vlew!
M
marcobiscaro2112
O problema do InputStream é que nesse caso seu arquivo vai estar compilado (em bytecode). Uma leitura desse arquivo não adiantaria muito, entende?
gregorioarthur
cheguei nisso:
packageteste;importjava.net.*;importjava.lang.reflect.Field;/** * * @author Arthur Gregorio * @version 1.0.0 * @since Release 1.0.0 */publicclassMain{/** * @param args Empacotamento Geral das classes */publicstaticvoidmain(String[]args){newMain().getInfo();}privatevoidgetInfo(){Classclazz=null;ClassLoaderloader=null;try{loader=newURLClassLoader(newURL[]{newURL("file:C:\\temp\\test\\sf.jar")},null);// adicionei o caminho da classe aqui e funfou!clazz=loader.loadClass("br.sfext.classes.Programa");Objectobj=clazz.newInstance();Fieldfield=clazz.getField("PRODUTO");field.setAccessible(true);Stringcampo=(String)field.get(obj);System.out.println(campo);}catch(MalformedURLExceptionex){ex.printStackTrace();}catch(ClassNotFoundExceptionex){ex.printStackTrace();}catch(InstantiationExceptionex){ex.printStackTrace();}catch(IllegalAccessExceptionex){ex.printStackTrace();}catch(SecurityExceptionex){ex.printStackTrace();}catch(NoSuchFieldExceptionex){ex.printStackTrace();}}}
ele acha o Jar, mas nao axa a classe dentro do JAR.