компиляция Java-программы с использованием другой Java-программы - PullRequest
2 голосов
/ 25 ноября 2010

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

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

Как я могу это сделать?

Ответы [ 4 ]

3 голосов
/ 25 ноября 2010

Взгляните на javax.tools.JavaCompiler.

Интерфейс для вызова компиляторов языка программирования Java ™ из программ.

Компилятор может генерировать диагностику во время компиляции (например, сообщения об ошибках). Если имеется диагностический слушатель, диагностика будет предоставлена ​​слушателю. Если прослушиватель не предоставлен, диагностика будет отформатирована в неопределенном формате и записана в вывод по умолчанию, который является System.err, если не указано иное. Даже если имеется диагностический прослушиватель, некоторые диагностические данные могут не вписываться в диагностику и будут записаны в вывод по умолчанию.

Вот небольшой фрагмент кода, который я недавно использовал:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = 
       compiler.getStandardFileManager(null, null, null);

fileManager.setLocation(StandardLocation.CLASS_OUTPUT, compileDirList);


Iterable<? extends JavaFileObject> compilationUnits = 
       fileManager.getJavaFileObjectsFromFiles(files);

List<String> opts = new ArrayList<String>();
// set compiler's classpath to be same as the runtime's
opts.addAll(Arrays.asList("-classpath", System.getProperty("java.class.path")));

// do the actual compilation
compiler.getTask(null, fileManager, null, opts, null, compilationUnits).call();
1 голос
/ 25 ноября 2010

Это должно быть задание. Начните здесь

0 голосов
/ 26 ноября 2010

«Java-программа, которая читает другую Java-программу из файла, компилирует ее и показывает ошибки и предупреждения», называется Java-компилятором.Это уже написано.Все, что вам нужно сделать, это вызвать его через API или exec ().

0 голосов
/ 25 ноября 2010

Просто используйте System.exec для запуска javac. Затем вы можете просто направить вывод в файл, который вы прочитаете, когда закончите компиляцию. Примерно так:

System.exec ("javac * .java> output.out"); ReadFile ( "output.out");

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...