[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);
}
}
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);
}
}
}
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);
}