Executar main

4 respostas
velo

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

4 Respostas

Giulliano

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 ???

velo

Naum.

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

VELO

T

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

velo

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

Se foi lanca exception…

Fazer o q, vida dura.

VELO

Criado 25 de maio de 2007
Ultima resposta 26 de mai. de 2007
Respostas 4
Participantes 3