Мой вопрос заключается в том, как запустить java-файл .class в каталоге с помощью класса exec() или ProcessBuilder. Это работает только в том случае, если файл .class находится в том же каталоге (как программа java).Как запустить файл .class, который находится в другом каталоге
ответ
Вы хотите создать совершенно новый процесс? Затем вы должны использовать
Runtime.getRuntime().exec(new String[] {"java","-cp","/path/to/classes/dir/","com.foo.MyClass"});
Если вы хотите что-то в этом процессе, вы можете создать новый ClassLoader, который знает, как загрузить файл .class. Затем вы можете использовать отражение, чтобы получить объект класса от загрузчика классов, и вызвать его «основной» метод или что-то в этом роде. Вам нужно будет использовать отражение, потому что класс не будет доступен в загрузчике класса по умолчанию.
Я оставил некоторые аргументы exec, а именно -cp для установки пути к классам (если вам нужно что-то помимо файла одного класса) –
Java не запускается именно так. Вам нужно указать абсолютный путь к пути к классам, а затем дать полное имя класса. Java не работает, поставляя файл класса. –
Спасибо, добавьте мой пример –
Проблема решаемая Ребята спасибо за ваши ответы ... :)
Решение Я использовал
Строка путь = "D: \ работа"; // Путь для выполнения моей программы
String program = "Test"; // Мое имя программы
ProcessBuilder pb = new ProcessBuilder («java», «- classpath», path, program);
Если вы когда-нибудь вернетесь на сайт, вы должны принять свой собственный ответ. –
Вы считали более простые альтернативы, чем использование exec()? Например. добавив класс в путь к классам и просто импортировав/назвав его обычным способом Java? – BalusC