2010-10-07 2 views
0

Мой вопрос заключается в том, как запустить java-файл .class в каталоге с помощью класса exec() или ProcessBuilder. Это работает только в том случае, если файл .class находится в том же каталоге (как программа java).Как запустить файл .class, который находится в другом каталоге

+1

Вы считали более простые альтернативы, чем использование exec()? Например. добавив класс в путь к классам и просто импортировав/назвав его обычным способом Java? – BalusC

ответ

0

Вы хотите создать совершенно новый процесс? Затем вы должны использовать

Runtime.getRuntime().exec(new String[] {"java","-cp","/path/to/classes/dir/","com.foo.MyClass"}); 

Если вы хотите что-то в этом процессе, вы можете создать новый ClassLoader, который знает, как загрузить файл .class. Затем вы можете использовать отражение, чтобы получить объект класса от загрузчика классов, и вызвать его «основной» метод или что-то в этом роде. Вам нужно будет использовать отражение, потому что класс не будет доступен в загрузчике класса по умолчанию.

+0

Я оставил некоторые аргументы exec, а именно -cp для установки пути к классам (если вам нужно что-то помимо файла одного класса) –

+0

Java не запускается именно так. Вам нужно указать абсолютный путь к пути к классам, а затем дать полное имя класса. Java не работает, поставляя файл класса. –

+0

Спасибо, добавьте мой пример –

0

Проблема решаемая Ребята спасибо за ваши ответы ... :)

Решение Я использовал

Строка путь = "D: \ работа"; // Путь для выполнения моей программы

String program = "Test"; // Мое имя программы

ProcessBuilder pb = new ProcessBuilder («java», «- classpath», path, program);

+3

Если вы когда-нибудь вернетесь на сайт, вы должны принять свой собственный ответ. –