Как запустить код Java с использованием кода Java? - PullRequest
2 голосов
/ 24 мая 2010

В принципе, я хочу сделать две вещи:

  1. Я хочу знать, есть ли способ запустить код Java с помощью кода Java.
  2. Если это возможно, как бы я показал вывод на моем экране? (будь то обычный вывод или ошибка или исключение)

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

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

Ответы [ 4 ]

5 голосов
/ 24 мая 2010

Да, это возможно.

Шаг 1: Скомпилируйте код
Используйте ProcessBuilder или Runtime , чтобы создать Процесс , в котором компилятор Java компилирует их код. (Обратите внимание, что для этого требуется, чтобы компилятор Java был доступен в системе во время выполнения).

Шаг 2: вызвать их код
Есть два способа вызвать их код. Вы снова можете использовать объект ProcessBuilder или Runtime для создания процесса, в котором вы выполняете их Java-код. Вы можете использовать функции getInputStream и getOutputStream процесса для чтения и записи в другой процесс. Альтернатива заключается в том, что вы можете использовать Class и различные API-интерфейсы отражения для загрузки своего кода и выполнения его непосредственно в Java.

1 голос
/ 24 мая 2010

В некоторых случаях вам придется вызывать компилятор (например, Suns javac), анализировать его выходные данные в случае ошибок и динамически загружать полученные классы.

В библиотеке времени выполнения Java нет API-классов, которые будут анализировать, компилировать и запускать исходный код Java.

0 голосов
/ 24 мая 2010

Вы можете использовать язык сценариев, работающий поверх JVM. Groovy - очень хорошая идея, и ее синтаксис очень похож на Java.

0 голосов
/ 24 мая 2010

Если вам нужен интерпретатор (поэтому компиляция не требуется) для Java, взгляните на BeanShell .
Мне это очень нравится!

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