Comandos com o ProcessBuilder

Oi pessoal, estou desenvolvendo uma app Web, e dentro de um servlet é feita a chamada ao ProcessBuilder, conforme a seguir, new ProcessBuilder(“xterm”, “-e”, “/home/pasta pessoal/NetBeansProjects/app/ gcc -o main.o main.c”).start(), com essa chamada esperava que na pasta /app fosse criado o arquivo executável de main.c, o que não acontece. Alguém conhece algum tutorial que possa servir para resolver esse problema? Grato pela colaboração.

Ordinariamente web containers costumam proibir a execução de runtime.exec ou processbuilder.exec. Veja se não é isso que está ocorrendo

Isto posto, você já tentou executar esse comando em uma linha de comando nesse mesmo servidor (sem ser pelo programa Java)? Dá a impressão que você está passando os parâmetros errados, já que /home/pasta pessoal/NetBeansProjects/app/ parece ser o nome de um diretório, não de um programa (e o gcc provavelmente não estará nesse diretório).

Oi entanglement, quando executo a chamada new ProcessBuilder(“xterm”, “-e”, “touch c arquivo.txt”).start(), o arquivo é criado dentro da pasta proc/pasta do processo tomcat/arquivo.txt, sendo que se estivesse executado esse mesmo comando numa app Desktop, o arquivo teria sido criado dentro da pasta app/arquivo.txt que é o objetivo. Ao executar essa chamada new ProcessBuilder(“xterm”, “-e”, “gcc -o main.o main.c”).start(), o arquivo main.o é gerado se o arquivo main.c estiver no diretório proc/pasta do processo tomcat/main.c, mas o main.c está na pasta app/maic.c.

Então execute uma sequência de comandos , não apenas o gcc, para acertar o diretório - note que quando você executa o comando xterm, ele começa em um determinado diretório que não sei qual é - o correto é força-lo antes de executar o comando gcc.

Talvez isso possa te ajudar:

Executando comandos shell script localmente e remotamente em java:

Acesso a código nativo em Java:
http://www.devmedia.com.br/criando-players-de-audio-video-em-java/26604

Abs.

Oi pessoal, se app for Desktop os comados são executados dentro do contexto da app, mas caso seja WEB os resultados dos comados são vistos na pasta /proc/2099/cwd/tomcat/bin no ubuntu, por exemplo ao executar a chamada new ProcessBuilder(“xterm”, “-e”,“touch arquivo.txt”).start(). Conforme o entanglement falou, o problema pode ser devido a proibição da execução do ProcessBuilder.