Executar main

Bom dia Pessoal,

Eu tenho uma aplicação que executa de tempos em tempos um programa externo (Runtime.getRuntime().exec(“java - jar programa.jar”).waitFor();

Reparem que é um programa em java.

Eu não posso simplemente pegar o main dessa outra aplicação e usar por eh um jar protegido, não open source, e cheio das travas… e tem um System.exit(0) no meio (o pessoal aqui do forum tentou alguma coisa, http://www.guj.com.br/posts/list/58908.java, mas quem fez o jar fechou todas essas portas).

Eu gostaria (e muito) de deixar a minha aplicação sem esse getRuntime, pois isso compromete um pouco a portabilidade… na verdade isso me encomoda por precisar de configuração… nem todo mundo tem o java no path…

Pergunto pra vocês, não tem com eu de dentro de uma aplicação java falar pra JVM executar esse jar numa nova instancia dela mesma?

Valeu!

VELO

Eu não fiz um teste aqui…mas se vc chamar só por

(Runtime.getRuntime().exec(“programa.jar”).waitFor();

sem o java - jar…e levando em consideração que a pessoa tem o jre na máquina, não funcionaria ???

Naum.

Tipo, falta o path do jar e fica na dependencia do SO ser capaz ou naum de resolver isso.

VELO

hmm basta instanciar um novo classLoader com esse jar, instalar um SecurityManager que bloqueie a chamada a System.exit(), carregar a classe que contem o mais (por Classloader.loadClass( … ) ) e executar (melhor via reflection) o metodo main dessa classe, usando os parametros necessarios

Pior q a classe q eu uso verifica se o security manager foi setado…

Se foi lanca exception…

Fazer o q, vida dura.

VELO