Вызов компилятора C из java-программы

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

Process p = new ProcessBuilder("c:\\MinGW\\bin\\cc.exe", "program.c").start();

Program.c содержит программу, которую пользователь вводит в TextArea, а «c:\MinGW\bin\cc.exe» — мой компилятор c. Я проверил, что это не вызывает никаких исключений. Он должен создать файл с именем a.exe в моем текущем каталоге с файлом program.c, но это не так. Как правильно это сделать?

Я видел два других сообщения, похожих на это, но они также не предоставляют простого чистого решения для этого. Кроме того, я должен запустить созданный исполняемый файл после него.

Заранее спасибо.


person l0k3ndr    schedule 28.10.2013    source источник
comment
ProcessBuilder не вызовет исключения, если в процессе что-то пойдет не так (т. е. компилятор выйдет из строя), вы должны прочитать вывод процесса, чтобы убедиться, что ничего не пошло не так...   -  person MadProgrammer    schedule 28.10.2013
comment
Прочтите (и выполните) все рекомендации Когда Runtime.exec() не будет. Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине сбоя. Затем игнорируйте, что он относится к exec и (продолжайте) создавать Process с помощью ProcessBuilder. Я видел два других поста, похожих на этот.. Ссылки?   -  person Andrew Thompson    schedule 28.10.2013
comment
@AndrewThompson Эти ссылки я забыл. Они приходили с предложениями, когда я давал название этому сообщению. Я буду работать над этим сегодня вечером.   -  person l0k3ndr    schedule 29.10.2013
comment
stackoverflow.com /questions/12340922/ одним из них был этот @AndrewThompson. Я впервые на каком-либо форуме, а также я новичок в java.   -  person l0k3ndr    schedule 29.10.2013


Ответы (1)


Как правильно это сделать?

Один из способов — использовать javax.tools.JavaCompiler. "для вызова компиляторов языка программирования Java™ из программ". Пример здесь.

person Catalina Island    schedule 28.10.2013
comment
Извините, я забыл, что должен был принять ответы, которые я нашел полезными. :) - person l0k3ndr; 12.02.2014