Собственные библиотеки, ошибка: этот экземпляр 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
Другие вопросы по тегам