Method.invoke () против RunTime.exec () - PullRequest
       8

Method.invoke () против RunTime.exec ()

1 голос
/ 17 декабря 2009

при использовании RunTime.exec () можно указать рабочий каталог подпроцесса (очень полезно, если исполняемое приложение можно запустить только из его местоположения, например, при доступе к некоторым локальным файлам конфигурации)

Если внешним приложением является файл JAR, он может прочитать манифест в банке, чтобы получить информацию о главном классе и пути к классам, а затем вызвать invoke () для запуска приложения ...

Есть ли способ установить там рабочий каталог? Я не могу найти способ сделать это? Или я должен использовать RunTime.exec () и фактически вызвать 'java -jar app.jar' ...

заранее спасибо за помощь David

Ответы [ 3 ]

4 голосов
/ 17 декабря 2009

Я бы сказал, что если у вас есть написанное вами приложение, которое зависит от того, какой рабочий каталог установлен, вы сделали это неправильно. Используйте Class.getResource и Class.getResoruceAsStream и передавая пути заполнения в аргументы для "main (String [])", чтобы удалить зависимости пути.

Также есть System.getProperty ("user.dir"); метод для получения рабочей директории, но вы не можете вызвать System.setProperty ("user.dir" ...), чтобы изменить его.

1 голос
/ 17 декабря 2009

Я верю, что ответ - нет. Боюсь, вам придется использовать Runtime.exec().

0 голосов
/ 17 декабря 2009

Согласно Mindprod site и этой статье , поскольку текущий каталог не может изменяться в течение всего времени выполнения программы, конструктору File не нужно встраивать его в каждый объект File.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...