Executando Runtime.exec()

[b]Alguém pode me dizer porque isso nao funciona?
Ele nao gera um arquivo achou e mesmo sem esse direcionamento " >achou " ele nao compila meu programa.
Alguém pode me dizer como resolver isso, ou me passar uma rotina que execute um compilador?

grato, no aguardo.
[/b]

import java.io.*;
import java.lang.Runtime;



public class Compilor{
	
	public Compilor(){
	}
	
	public static void main(String[] args) throws IOException {
		        
		Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("gcc /home/andrep/teste/calculadora.c > achou");
        int resComp = proc.exitValue();
        System.out.println("Resultado da compilacao: " + resComp);
    }
    	
}

Tente assim:

import java.io.*;
import java.lang.Runtime;



public class Compilor{
	
	public Compilor(){
	}
	
	public static void main(String[] args) throws IOException {
		        
		Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("/usr/bin/gcc /home/andrep/teste/calculadora.c > achou".split("\s"));
        int resComp = proc.exitValue();
        System.out.println("Resultado da compilacao: " + resComp);
    }
    	
}

acho que assim funciona.

Mudei o código um pouquinho… porém inclui as suas alterações, mas mesmo assim ainda nao funciona! O engraçado é que os arquivos que tem erros propositais, esses sim o console (eclipse) do Java mostra os erros de compilação.
veja o novo código:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.Runtime;

public class Compilor{
	
	public Compilor(){
 	}
 
	public void Compila(String arqName) {
	
		Runtime r = Runtime.getRuntime();
		System.out.println("Compilando "+ arqName + " aguarde...");
		 int lExitValue = -1 ;
		
		try {
			Process proc = r.exec("/usr/bin/gcc /home/andrep/"+arqName);
			BufferedReader stdout = 
		           new BufferedReader(
		             new InputStreamReader(proc.getInputStream()));
		         BufferedReader stderr = 
		           new BufferedReader(
		             new InputStreamReader(proc.getErrorStream()));

		         do {
		            if (stdout.ready())
		              System.out.println(stdout.readLine());
		            if (stderr.ready())
		              System.out.println(stderr.readLine());
		            try {
		              lExitValue = proc.exitValue();
		            }
		            catch (IllegalThreadStateException ex) {
		              // Processo nao esta pronto.... aguarde
		            }
		         } while (lExitValue == -1);
		}
		catch(java.io.IOException e) {
			System.out.println(e);
		}
	}
}

Tente isto

[code]import java.io.*;
import java.lang.Runtime;

public class Compilor{

public Compilor(){
}

public static void main(String[] args) throws IOException {
	FileOutputStream os = new FileOutputStream("achou");
	Runtime rt = Runtime.getRuntime();
	Process proc = rt.exec("gcc /home/andrep/teste/calculadora.c");
	InputStream is = proc.getInputStream();

	int c = 0;
	while ((c = is.read()) != -1) {
		os.write(c);
	}
	
	is.close();
	os.close();

	int resComp = proc.exitValue();
	System.out.println("Resultado da compilacao: " + resComp);
}

}
[/code]