Собственные библиотеки, ошибка: этот экземпляр Java не поддерживает 32-разрядную JVM
Привет сообщество stackru,
Я использую NetBeans IDE 7.2.1 и пытаюсь скомпилировать + запустить проект с собственными библиотеками. Моим библиотекам требуется 32-битная JVM. Я использую Windows 7 64-bit. При попытке скомпилировать + запустить мой проект я встретил следующее:
Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
Я попытался перейти к конфигурации и включил следующие аргументы (безрезультатно):
-d32
-d32 -vm "C:\Program Files (x86)\Java\jre7\bin\javaw.exe"
-vm "C:\Program Files (x86)\Java\jre7\bin\javaw.exe"
У меня установлены как 64-битная JRE, так и 32-битная JRE, и в моем диспетчере платформ доступны как 64-битная JDK, так и 32-битная JDK.
Любые предложения, чтобы решить эту проблему? Я читал, что вы можете получить проблемы, установив 64-битную JRE до 32-битной JRE; это одна из тех проблем? (Я действительно сначала установил 64 бит)
2 ответа
Когда вы запускаете процесс (например, из командной строки, но это тот же AFAIK, когда вы запускаете другой процесс из кода), в определенной группе путей (содержится в переменной среды PATH (?)) Выполняется поиск исполняемого файла с именем соответствует тому, что вы ввели. Если 64-разрядная и 32-разрядная версии имеют одно и то же имя, и сначала обнаруживается 64-разрядная версия, она будет выполнена. Я рекомендую указать полный путь 32-битного JDK.
РЕДАКТИРОВАТЬ:
Я только что увидел вопрос об IDE NetBeans. Я никогда не использовал это, поэтому единственный совет, который я могу вам дать, - это посмотреть в настройках NetBeans и отрегулировать путь к JDK и JRE, чтобы он указывал на 32-битную версию. Я оставлю здесь свой ответ для людей, не использующих NetBeans.
Спасибо @11684 за отличный ответ. Я просто хотел бы добавить пример кода для тех, кто компилирует из командной строки / командной строки.
Для компиляции не должно иметь значения, какой javac
привыкает - 32-битный или 64-битный.
>javac MyJavaProgramUsing32BitNativeLib.java
Для фактического выполнения программы важно указать путь к 32-битной версии java.exe
Я выложу пример кода для Windows
, поскольку это, похоже, ОС, используемая ФП.
Windows
Скорее всего, код будет примерно таким:
>"C:\Program Files (x86)\Java\jre#.#.#_###\bin\java.exe" MyJavaProgramUsing32BitNativeLib
Разница будет в цифрах после jre
, Чтобы узнать, какие номера вы должны использовать, введите:
>dir "C:\Program Files (x86)\Java\"
На моей машине процесс выглядит следующим образом
C:\Users\me\MyProject>dir "C:\Program Files (x86)\Java"
Volume in drive C is Windows
Volume Serial Number is 0000-9999
Directory of C:\Program Files (x86)\Java
11/03/2016 09:07 PM <DIR> .
11/03/2016 09:07 PM <DIR> ..
11/03/2016 09:07 PM <DIR> jre1.8.0_111
0 File(s) 0 bytes
3 Dir(s) 107,641,901,056 bytes free
C:\Users\me\MyProject>
Так что я знаю, что мои номера 1.8.0_111
и моя команда
C:\Users\me\MyProject>"C:\Program Files (x86)\Java\jre1.8.0_111\bin\java.exe" MyJavaProgramUsing32BitNativeLib