Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ошибка EXE4j Jar для exe

Автор вопроса: user2473015Ответов: 1

Недавно я обновил Java 7 до версии 21 JDK и создал Java-приложение с netbeans. Для распространения моей банки я использую Exe4j 4.5.2 Jar для exe.

Теперь, когда я использовал Exe4j, он создает exe, но когда я его запускаю, он показывает мне сообщение об ошибке.

"Не удалось запустить JVM. Максимальный размер кучи (-Xmx) может быть слишком большим, либо антивирус или брандмауэр могут заблокировать выполнение".

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

(Я использую 64-битные версии JDK и EXE4j, но исполняемый файл exe - 32-битный. Мне нужно 32-битное приложение)

  • Если максимальный размер кучи превышает 3 ГБ или доступную системную память, вы получите эту ошибку. Вы не сообщили нам, какие настройки вы используете MadProgrammer 11.06.2013
  • Это было не из-за ошибки доступной памяти. Это было связано с тем, что 32-битная JRE не была установлена. user2473015 21.06.2015
  • Говорит, что верно, Windows резервирует 1 ГБ памяти, но 32-битный процесс может получить доступ только к 4 ГБ. 32-битный процесс не может получить доступ к более чем 3 ГБ на машине с Windows... MadProgrammer 21.06.2015

javajarjvmheapexe4j

Ответы

Ответ 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-битную исполняемую оболочку.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы