Я пытаюсь запустить Java-программу из другой Java-программы, где обе программы не находятся в одном пакете на самом деле даже не в одном проекте и для начала нашел ответ на SO, вот код:Как сделать класс доступным для Runtime java-команды вне пакета
try {
Process processCompile = Runtime.getRuntime().exec("javac Main.java");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Process processRun = null;
try {
processRun = Runtime.getRuntime().exec("java Main");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
printLines(" stdout:", processRun.getInputStream());
printLines(" stderr:", processRun.getErrorStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Исполнительное следующий код дает мне следующее сообщение об ошибке:
Error: Could not find or load main class Main
Теперь я понимаю, что я должен каким-то образом сделать Main.java доступны универсально запустить его из другой программы. Я не уверен, как это сделать.
Я бы очень признателен за помощь в этом.
является ли потребность в этой другой программе для работы в качестве своего собственного процесса Java? если нет, то это больше проблема управления зависимостями. – mre
См. Также [Когда Runtime.exec() не будет] (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html) для многих хороших советы по правильному созданию и обработке процесса. Затем проигнорируйте это, ссылаясь на 'exec' и используйте' ProcessBuilder' для создания процесса. Также разбивайте 'String arg' на' String [] args' для учета таких вещей, как пути, содержащие пробельные символы. –
@AndrewThompson Спасибо, Андрей, я посмотрю ... Оцените это. –