Я работаю в устаревшей системе, в которой есть приложение VB6, которое должно вызывать код Java. Решение, которое мы используем, состоит в том, чтобы приложение VB вызывало DLL C ++, которая использует JNI для вызова кода Java. Немного странно, но на самом деле это работает довольно хорошо. Тем не менее, я перехожу на новую коробку разработчика, и я столкнулся с серьезной проблемой с этим. Встроенное приложение VB отлично работает на новом компьютере, но когда я пытаюсь запустить его из VB, DLL не может загрузить виртуальную машину, получая код возврата -4 (JNI_ENOMEM) из JNI_CreateJavaVM.
И встроенное приложение, и VB вызывают одну и ту же dll, и я пробовал это как на Java 1.5, так и на 1.6. Я попробовал предложения здесь (перенаправление stdout и stderr в файлы, добавление опции vfprint, добавление опции -Xcheck: jni), но безрезультатно. Я не могу получить дополнительную информацию из JVM. Насколько я могу судить, новый блок настроен почти так же, как старый (установленное программное обеспечение, путь, Classpath и т. Д.), И оба работают под управлением одного и того же выпуска Windows Server 2003. Новый компьютер - x64 коробка с большим объемом памяти (4 ГБ, а не 2 ГБ), но она работает под управлением 32-битной Windows.
Какие-либо предложения или идеи о том, что еще посмотреть? Переписать все это более разумным способом - не вариант - мне нужно найти способ заставить dll заставить загрузку jvm, не думая, что ей не хватает памяти. Любая помощь будет высоко ценится.