JVM, запущенная через CreateProcess (), теряет библиотеку путей к классам - PullRequest
2 голосов
/ 10 ноября 2008

Я запускаю следующую командную строку (процесс) из программы Windows VC ++ 6, используя CreateProcess (или _spawnv ()):

  • java -cp c: \ dir \ updates.jar; c: \ dir \ main.jar Main

и обновления классов в файле updates.jar (некоторые из них в main.jar) не читаются и не обнаруживаются. Как будто библиотеку updates.jar нельзя найти или прочитать.

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

Если я запускаю JVM из командной строки, продолжаю работать, И ТОГДА запускаю исполняемую заглушку (см. Выше), тогда все также работает нормально. (Это создает впечатление, что проблема связана с правами на файлы).

Любое понимание будет с благодарностью!

- Эдвард

Ответы [ 3 ]

1 голос
/ 17 ноября 2008

Попробуйте использовать утилиту Microsoft FileMon, чтобы выяснить, что происходит. Установите фильтр включения на «обновления», чтобы сосредоточиться на проблеме.

http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx

0 голосов
/ 17 ноября 2008

Спасибо jdigital !

Я попробовал FileMon, и он показал мне, что я делаю неправильно. Исполняемый файл, вызывающий CreateProcess (), имел неизвестный дескриптор файла для updates.jar из-за попытки скопировать JAR-обновление ранее. Неверный код, который работает в производственной среде, но не в тестовой среде.

0 голосов
/ 13 ноября 2008

Вы пробовали это на другой машине? Другая ОС? Какой JVM вы используете? Вы пробовали разные JVM?

Можете ли вы предоставить нам минимальный пример, демонстрирующий проблему?

...