Как выполнить java-программу с помощью Runtime.getRuntime().exec(). Например, у нас будет путь к файлу java как c:/java/abc.java. Пожалуйста, помогите мне с кодом.
Класс времени выполнения в java
Ответы (5)
Предполагая, что abc.java содержит основной метод, который вы хотите выполнить:
Runtime.getRuntime().exec("javac c:\java\abc.java -d c:\java\")
Runtime.getRuntime().exec("java c:\java\abc")
Не забывай это:
- вам может понадобиться прочитать stdout/stderr java-программы
вам может потребоваться установить/обновить переменную среды и PATH перед выполнением вашей команды java
CreateProcess: c:\j2sdk1.4.0\bin\helloworld error=2
означает, что Win32 CreateProcess
возвращает 2 в качестве кода ошибки, когда не может найти указанную вами команду; более конкретно, когда команда не ссылается на исполняемый файл в своем пути поиска.
Посмотрите на этот SO question для получения более полного кода "Runtime.getRuntime().exec()
", а также на этого фрагмента.
Этот код создает оболочку (как в Runtime.getRuntime().exec("cmd /K")
), в которой вы пишете sdtin
любую команду, которую хотите выполнить.
Интерес этого подхода заключается в повторном использовании процесса оболочки, чтобы извлечь выгоду из предыдущей команды: если вы выполняете «cd
», затем выполняете «dir
», последняя команда будет отображать содержимое каталога, на который ссылается команда cd
.
То же самое верно и для настроек PATH
, непосредственно перед использованием javac
или java
.
Вам следует использовать ProcessBuilder вместо среды выполнения. Основное использование похоже на:
Process process = new ProcessBuilder(command).start();
Вы найдете больше кода по ссылке выше. Также см. этот вопрос .
Вы имеете в виду, что хотите, чтобы программа Java запускала другую программу Java. В этом случае может быть полезен Этот поток SO.
Пожалуйста, посмотрите отличный ресурс, который раньше назывался javaalmanac.
http://www.exampledepot.com/egs/java.lang/Exec.html
try {
// Execute a command with an argument that contains a space
String[] commands = new String[]{"grep", "hello world", "/tmp/f.txt"};
commands = new String[]{"grep", "hello world", "c:\\Documents and Settings\\f.txt"};
Process child = Runtime.getRuntime().exec(commands);
} catch (IOException e) {
}