Как скомпилировать и запустить любой файл в любом месте на C, Java и C ++? - PullRequest
1 голос
/ 08 февраля 2012

Я создаю приложение типа редактора, в котором я хочу компилировать и запускать (конечно, создавать, редактировать, открывать также) файлы C, C ++ и Java; Я создаю его на Java.

Теперь для компиляции и запуска я беру весь путь к файлу и компиляция и запуск по этому полному пути.

например.

 compileFileCommand = javac /media/disk/eclipse/\/UniversalIDE/Java/FirstJava.java

try
{
    System.out.println("Compiling Java File");
    Process compileProcess = Runtime.getRuntime().exec(compileFileCommand);
            compileProcess.waitFor();
    String line = "";
    BufferedReader bri = new BufferedReader(new InputStreamReader(compileProcess.getInputStream()));
    BufferedReader bre = new BufferedReader(new InputStreamReader(compileProcess.getErrorStream()));
    while ((line = bri.readLine()) != null)
    {
     System.out.println(line);
    }
    bri.close();
    while ((line = bre.readLine()) != null)
    {
     System.out.println(line);
    }
    bre.close();
    compileProcess.waitFor();
    System.out.println("Done Java Compile.");
} catch (Exception e)
{
 // TODO: handle exception
 System.out.println("Exception in Java Compile. ");
 System.out.println(e.getMessage());
}

Приведенный выше код прекрасно работает и создает файл класса в месте расположения файла Java. Но bri.readLine () всегда содержит ноль.

Для запуска Java-файла

runFileCommand = java /media/disk/eclipse/\/UniversalIDE/Java/FirstJava

И для запуска файлов C & CPP та же процедура

Для компиляции C

String compileFileCommand = "gcc " + fileNameWithFullPath; 

Для C Running

String runFileCommand = "./" + fileNameWithFullPath.split(".c")[0];

Для составления CPP

String compileFileCommand = "g++ " + fileNameWithFullPath;

Для запуска CPP

String runFileCommand = "./" + fileNameWithFullPath.split(".cpp")[0];

Я использую тот же код, который использовался для компиляции Java-файла, но в результате он ничего не дает, а bri.readLine () все время выдает null.

Пожалуйста, помогите мне решить эту проблему и, пожалуйста, дайте мне любое предложение по моей заявке.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

bri.readLine() возвращает ноль, потому что, когда файл Java компилируется без ошибок, ничего не выводится в стандартный формат. Это был вопрос?

0 голосов
/ 08 февраля 2012

Имя файла вывода по умолчанию для gcc и g ++: a.out, а не имя файла без расширения.

Попробуйте runFileCommand = "./a.out" или используйте параметр -o с gcc / g ++, чтобы указать имя выходного файла.

Также ни одна из команд компиляции ничего не выводит, когда нет ошибок или предупреждений.

...