У меня возникают проблемы с использованием ProcessBuilder для запуска класса в моем проекте. Мой код:
public class Main {
public static void main(String[] args) {
try {
String pathToJar = Main.class.getProtectionDomain().getCodeSource()
.getLocation().toURI().getPath();
ArrayList<String> params = new ArrayList<String>();
params.add("javaw");
params.add("-classpath");
params.add(pathToJar);
params.add("Program");
ProcessBuilder pb = new ProcessBuilder(params);
Process process = pb.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Program находится в том же проекте (та же папка bin) и отлично работает, если запускалась напрямую, но таким образом я получаю сообщение об ошибке «Не удалось найти основной класс: Program». Где ошибка в моем коде?
Заранее спасибо.
[EDIT] Я пришел к выводу, что какой-то код в моем классе Program дает ошибку. В основном работает только с «чистым» файлом main. В eclipse класс Program импортирует некоторые библиотеки, находящиеся внутри файла jar. Мне не нужно ссылаться на него в ProcessBuilder? Если да, то как?
Program
? Вparams.add("Program");
вам необходимо указать полное имя класса. - person Jim Garrison   schedule 13.05.2012params.add("build.test.Program");
. Все та же ошибка - person Ciro   schedule 13.05.2012pathToJar
? Это то, что вы ожидаете? - person Jim Garrison   schedule 13.05.2012javaw build.test.Main
, работает, аjavaw build.test.Program
- нет. - person Ciro   schedule 13.05.2012params.add(System.getProperty("java.class.path").concat(";").concat(pathToJar));
заменитьparams.add(pathToJar)
. - person Krrose27   schedule 13.05.2012