Olá
Bom, gostaria de saber como eu posso pegar o endereço da própria aplicação, da pasta que está o jar. Ja pesquisei bastante, e só consegui achar os métodos System.getProperty(“user.dir”), e new File("").getPath. O problema é que eu chamo esse jar de um outro programa, e os metodos descritos pegam o caminho do programa que chama, e não da propria aplicação.
Não sei se consegui ser claro, vou dar um exemplo:
O programa se encontra em Templates/Funcenter/jogos/Aplicativo.jar
O programa que chama essa aplicação se encontra em Templates/Funcenter
Dai, quando é chamado o System.getProperty(“user.dir”) no Aplicativo.jar, ele retorna Templates/Funcenter, ao inves de Templates/Funcenter/jogos/ (Que seria o que eu quero). Mas se eu executar a aplicação diretamente pela pasta, ele pega certo.
Não existe um outro método que faça pegar o diretório certo? Obrigado.
Não entendi, você quer executar o jogo.jar indiretamente por outro .jar ?
Não. Eu ja estou executando, não é esse o problema. O problema é que o System.getProperty(“user.dir”) retorna o endereço de onde a aplicação foi chamada, e não de onde ela fica.
Por exemplo, se eu estiver em /home/arthur/ e executar o comando:
java -jar Templates/Funcenter/jogos/Aplicacao.jar, o System.getProperty(“user.dir”) irá retornar /home/arthur, que é o endereço de onde eu chamei o jar. Mas eu quero que ele retorne /home/arthur/Templates/Funcenter/jogos/, que seria onde o JAR esta localizado, entendeu?
Ja tentei com o new File("").getPath, e deu na mesma.
import java.io.File;
public class CurrentDir {
public static void main (String args[]) {
File dir1 = new File (".");
File dir2 = new File ("..");
try {
System.out.println ("Current dir : " + dir1.getCanonicalPath());
System.out.println ("Parent dir : " + dir2.getCanonicalPath());
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Valeu guilherme. Funcionou perfeitamente
[code]private void Manual(java.awt.event.ActionEvent evt) {
/* ABRINDO ARQUIVO PDF */
try {
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+getClass().getResource("/documentos/java.pdf"));
} catch (IOException e) {
e.printStackTrace();
}
} [/code]
No local de PDF, coloque seu jar
Guilherme, há outro meio de rodar um jar dentro da aplicação
Estou com o mesmo porém
Outra dúvida:
Runtime.getRuntime().exec("java -jar /jogos/Aplicativo.jar");
Como eu faço pra verificar se o comando foi rodado corretamente, sem erros?
[quote=Arthur.hvt]Outra dúvida:
Runtime.getRuntime().exec("java -jar /jogos/Aplicativo.jar");
Como eu faço pra verificar se o comando foi rodado corretamente, sem erros?[/quote]
Se o “Aplicativo.jar” for aberto, então está rodando, obviamente…ou então faça um:
try
{
Runtime.getRuntime().exec("java -jar/jogos/Aplicativo.jar");
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(this,"ERRO","ERRO",javax.swing.JOptionPane.ERROR_MESSAGE);
}
Se o JOptionPane aparecer, ocorreu um erro…
Não da certo. Não ocorre nenhuma exceção quando não acha Aplicativo.jar, por exemplo.