Недавно я обновил Java 7 до версии 21 JDK и создал Java-приложение с netbeans. Для распространения моей банки я использую Exe4j 4.5.2 Jar для exe.
Теперь, когда я использовал Exe4j, он создает exe, но когда я его запускаю, он показывает мне сообщение об ошибке.
"Не удалось запустить JVM. Максимальный размер кучи (-Xmx) может быть слишком большим, либо антивирус или брандмауэр могут заблокировать выполнение".
После нескольких тестов я обнаружил, что мои ранее (до установки JDK7u21) исполняемые файлы рабочего приложения из exe4j также теперь выдают такое же сообщение об ошибке.
(Я использую 64-битные версии JDK и EXE4j, но исполняемый файл exe - 32-битный. Мне нужно 32-битное приложение)
Ответ 1 · рейтинг 3 · Community
Exe4j работает, загружая DLL целевой JVM, что требует, чтобы JVM была той же "разрядности" с исполняемой оболочкой. Таким образом, 32-разрядная оболочка Exe4j может загружать только 32-разрядную JVM, а 64-разрядная оболочка может загружать только 64-разрядную JVM.
Когда Exe4j ищет в реестре JVM, он игнорирует все JVM неправильной разрядности и просматривает только те, которые имеют собственную разрядность. Однако если вы вынуждаете Exe4j загружать конкретную JVM, устанавливая переменную среды EXE4J_JAVA_HOME, а разрядность не совпадает, загрузка JVM завершится ошибкой.
Если вам нужно 32-битное приложение (т. е. исполняемая оболочка), у вас должна быть установлена 32-битная JRE или JDK. С другой стороны, если вы хотите использовать 64-битную JVM, вы должны предоставить 64-битную исполняемую оболочку.