Estou com um problema na execução de comandos no linux pois não consigo setar variáveis de ambiente.
O comando que eu preciso executar é “poketool testeprog.c -f_todas_”
Este comando exige algumas variáveis setas. Se eu executar diretamente no terminal, funciona corretamente. Meu .bashrc tem as seguintes variáveis:
PATH0="/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/sbin"
PATH1=".:/usr/local/poketool/bin"
PATH2=".:/usr/local/poketool/bin/interface"
export PATH="${PATH0}:${PATH1}:${PATH2}"
export POKEBIN="/usr/local/poketool/bin"
export POKETABS="/usr/local/poketool/bin/poketabs"
export LITABS="/usr/local/poketool/bin/litabs"
Código utilizando Runtime.getRuntime().exec
String [] array = new String[3];
array[0] = "poketool";
array[1] = nomeArquivo;
array[2] = "-f_todas_";
String [] env = new String[4];
env [0] = "PATH=/usr/local/poketool/bin";
env [1] = "POKEBIN=/usr/local/poketool/bin";
env [2] = "POKETABS=/usr/local/poketool/bin/poketabs";
env [3] = "LITABS=/usr/local/poketool/bin/litabs";
System.out.println(System.getenv());
Runtime.getRuntime().exec("pokeaval",env,diretorioPoketool);
Código utilizando ProcessBuilder
ProcessBuilder pb = new ProcessBuilder("poketool", nomeArquivo, "-f_todas_");
Map<String, String> env1 = pb.environment();
env1.put("PATH", env1.get("PATH") + ":/usr/local/poketool/bin");
env1.put("POKEBIN","/usr/local/poketool/bin");
env1.put("POKETABS","/usr/local/poketool/bin/poketabs");
env1.put("LITABS","/usr/local/poketool/bin/litabs");
pb.directory(diretorioPoketool);
System.out.println(pb.environment());
Process p = pb.start();
O erro gerado é o mesmo para os dois trechos de programa (abaixo). Acredito que o erro gerado acontece porque as variáveis de ambiente não estejam setadas corretamente.
java.io.IOException: Cannot run program “poketool” (in directory “/trebam/compress/pok”): java.io.IOException: error=2, Arquivo ou diretório inexistente
Os arquivos e diretórios estão corretos, até porque se eu chamar o comando “gcc - o exe testeprog.c” este executa corretamente dentro do diretório.
Por favor me ajudem. Preciso fazer isso funcionar pra conseguir concluir a implementação do meu mestrado.
Alexandre Lenz
email e gtalk: arlenz@gmail.com
msn: alexandre_lenz2@hotmail.com
EDIT (Moderador) - Deixei o título da mensagem um pouco mais curto, para evitar um bug do JForum que está impedindo as pessoas de postarem respostas.