Собственные библиотеки, ошибка: этот экземпляр Java не поддерживает 32-разрядную JVM

Привет, сообщество stackoverflow,

Я использую среду IDE NetBeans 7.2.1 и пытаюсь скомпилировать+запустить проект с собственными библиотеками. Для моих библиотек требуется 32-битная JVM. Я использую Windows 7 64-бит. При попытке скомпилировать + запустить мой проект я столкнулся со следующим:

    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-битную версию)


person Matthew Sutter    schedule 01.03.2013    source источник
comment
Спасибо за быстрый ответ, 11684! Прочитав то, что вы сказали, я смог найти дополнительную информацию. В NetBeans я щелкнул правой кнопкой мыши проект, который пытался скомпилировать, затем перешел в свойства > библиотеки > платформа java и указал свой 32-разрядный JDK. Теперь, чтобы исправить другие управляемые ошибки :)   -  person Matthew Sutter    schedule 01.03.2013


Ответы (2)


Когда вы запускаете процесс (например, в командной строке, но это то же самое, AFAIK, когда вы запускаете другой процесс из кода) определенная группа путей (содержащаяся в переменной среды PATH (?)) ищется исполняемый файл с именем соответствует тому, что вы ввели. Если 64-битная и 32-битная версия имеют одинаковое имя и 64-битная версия будет найдена первой, она будет выполнена. Я рекомендую указывать полный путь к 32-битному JDK.

EDIT:
Я только что увидел, что вопрос касается среды IDE NetBeans. Я никогда этим не пользовался, поэтому единственный совет, который я могу вам дать, — заглянуть в настройки NetBeans и изменить путь к JDK и JRE, чтобы он указывал на 32-разрядную версию. Я оставлю свой ответ здесь для людей, не использующих NetBeans.

person 11684    schedule 01.03.2013

Спасибо @11684 за отличный ответ. Я просто хотел бы добавить пример кода для тех, кто компилирует из командной строки/командной строки.

Для компиляции не должно иметь значения, какой javac используется - 32-битный или 64-битный.

>javac MyJavaProgramUsing32BitNativeLib.java

Для фактического выполнения программы важно указать путь к 32-битной версии java.exe

Я опубликую пример кода для Windows, так как это, похоже, ОС, используемая OP.

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
person bballdave025    schedule 16.11.2016