Galera,
Preciso executar um .jar a partir da minha aplicação. Tenho algumas dúvidas quanto ao uso do Runtime.getRuntime().exec():
-
Em que diretório estou ao executá-lo? Sempre no diretório do usuário?
-
Como faço para executar um jar que fica no diretório da aplicação, visto que tentei assim e não deu:
Runtime.getRuntime().exec("cd " + diretorio);
Runtime.getRuntime().exec("java -jar MeuJar.jar");
- Há alguma outra forma sem ser usando este comando?
Obrigado!!!
Cara, acho que você deve colocar o path inteiro.
Então, se você está na pasta MeuJava, você faz:
Runtime.getRuntime().exec("java -jar /home/usr/seuUsuario/MeuJar.jar");
O comando ali dentro acredito que esteja certo. Se não der, troque java -jar por start, mas acho que assim é mais provável que funcione.
Eu não sei se funciona mas você pode usar um Array de comandos
String[] cmds = {("cd"+diretorio),"java -jar MeuJar.jar"};
try{
Proccess p = Runtime.getRuntime().exec(cmds);
Scanner sc = new Scanner(p.getOutputStream());
while(sc.hasNext())
System.out.println(sc.nextLine());
}catch(Exception e){
e.printStackTrace();
}
Galera,
Obrigado pela ajuda. Resolvi assim:
String home;
// Verifica SO
if (System.getProperty("os.name").contains("Windows"))
{
home = System.getProperty("user.home") + "\\";
}
else
{
home = System.getProperty("user.home") + "/";
}
String comando = home + "MeuJar.jar";
try
{
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+comando);
}
catch (IOException e)
{
e.printStackTrace();
}
Valeu e bom dia a todos!!!
Acho que você poderia fazer assim para obter o camino completo:
String home = System.getProperty("user.home") + File.separator + "MeuJar.jar";
try
{
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+comando);
}
catch (IOException e)
{
e.printStackTrace();
}
Mas pelo que sei esse comando no exec roda soh em Windows…