2013-09-16 2 views
1

У меня есть приложение Java, и я бы хотел запустить новый процесс (запустите файл .bat), который будет делать то же самое, что и двойным щелчком по нему.Процесс появления в Java, аналогично двойному щелчку

Я попробовал как Runtime.getRuntime().exec(), так и ProcessBuilder, чтобы создать этот процесс. Оба эти подходы работают (они могут запускать .bat-файл), , но моя проблема в том, что они фактически не делают то же самое, что и двойным щелчком по нему.

В частности, этот .bat-файл запускает JVM (java.exe MyMainClass), который настроен на запуск с использованием Windows SxS (бок о бок). Таким образом, я создал соответствующий java.exe.config и java.exe.manifest файлов. Когда i doulbe нажимает на это, приложение java запускается и соответствующие DLL-файлы загружаются succesfuly (причина мне нужна SxS).

Моя проблема заключается в том, что, когда я начала точно так же .bat файл (с теми же самыми аргументами и окружающей среды, процесса), либо с помощью ProcessBuilder или Runtime.getRuntime().exec(), это, кажется, не принимать во внимание мою конфигурацию SxS, таким образом, .dlls, которые мне нужны, не загружаются вообще, что приводит к ошибкам.

Кто-нибудь знает, как запустить этот .bat-файл так же, как Windows laucnhes, когда я дважды нажимаю на него? Кроме того, есть ли у кого-нибудь опыт развертывания Java SxS? Я не могу понять, почему ProcessBuilder игнорирует мою конфигурацию SxS.

Заранее спасибо.

ответ

0

Вы можете попробовать начать CMD окно, которое загружает битой файл приложения:

Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"C:\\path\\to\\the\\app.bat arg1 arg2\""); 
Смежные вопросы