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

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

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

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

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

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


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


Ответы (1)


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

person Community    schedule 07.08.2013
comment
В обоих случаях это работало. 64-битный и 32-битный. Какую версию лучше использовать? - person user2473015; 21.06.2015
comment
Вы можете предоставить оба варианта, и пусть ваши пользователи сами решат, какую версию использовать: java.com/en /download/faq/java_win64bit.xml Если вы хотите предоставить только один, учитывая, что 64-разрядная версия не будет работать на старых 32-разрядных машинах, я бы предложил предоставить 32-разрядную версию. - person ; 21.06.2015
comment
Спасибо за предложение - person user2473015; 22.06.2015