Как перенастроить eclipse для использования 64-битной JVM

Я использую eclipse во всех 64-битных средах выполнения. Текущие настройки Java > установленные JRE и среда выполнения указывают на jdk1.6.0_30, который является 64-разрядной версией JDK. Однако eclipse по-прежнему считает, что работает 32-битная версия, потому что когда я запускаю:

System.getProperty("sun.arch.data.model");

он возвращает 32 вместо 64.

И внешний ресурс JNI, который я скомпилировал для 64-битных машин, не будет ссылаться на общий файл .so, если только он не работает в 64-битной среде. (Я получаю ошибки несоответствия размера слова, когда пытаюсь это сделать)

Итак, как я могу перенастроить eclipse для запуска 64-битной версии jvm. Должна ли сама затмение быть 64-битной версией?

: в линукс

Изменить: я перепробовал все предложения, и ничего не работает. Я изменил выполнение и переменные среды, чтобы они указывали на самый новый JDK, который у меня есть, 1.6_30. когда я запускаю программу из командной строки, я получаю 64 и amd64 в качестве значения, когда я запускаю ту же программу в eclise, я получаю 32 и i386. Что-то не так в eclipse, из-за чего он пытается запустить его на 32-битной JVM. когда я пробую java -d32 -version, он говорит, что 32-битная среда не установлена, но Eclipse этого не знает. Я изменил файл Eclipse.ini, и все равно ничего не работает. Я перезапустил затмение после этих изменений... ничего. Может ли кто-нибудь, кто хорошо разбирается в затмении, помочь мне здесь. Благодарность


person Randnum    schedule 24.01.2012    source источник
comment
Вы уверены, что "sun.arch.data.model дает архитектуру JVM, а не архитектуру ОС. Я немного не понимаю эту концепцию.   -  person RanRag    schedule 24.01.2012
comment
В чем я не уверен. Я получил это из другого потока переполнения стека. но сейчас проверю   -  person Randnum    schedule 24.01.2012
comment
Вы используете 64-битную версию Eclipse? Я почти уверен, что Eclipse выберет правильную JVM на основе своей версии, и, поскольку Eclipse поставляет JNI, вы не можете смешивать и сопоставлять 32- и 64-битные установки Eclipse/JVM.   -  person Edward Thomson    schedule 24.01.2012
comment
Это может быть моя проблема, но потому что я изменил все, чтобы он говорил об использовании 64-битной jvm. Это не так, потому что только потому, что eclipse работает в 32-битном режиме, это заставит его программы делать то же самое.   -  person Randnum    schedule 25.01.2012
comment
@Randnum: eclipse использует кучу JNI, поэтому, если у вас есть 32-битный Eclipse, ему придется запустить 32-битную JVM, чтобы он мог запускать свой 32-битный JNI. Иначе у него тоже была бы проблема, которую вы описываете выше.   -  person Edward Thomson    schedule 25.01.2012
comment
JNI не уникален для eclipse, хотя он взят из JDK, который является 64-битным. Я запускаю файл eclipse, он говорит мне, что это 64-битная версия, если только ссылка не 64-битная. Я не уверен, как я мог точно сказать, какую версию я использую.   -  person Randnum    schedule 25.01.2012
comment
Я собираюсь попробовать установить 64-битную версию, которая, как я знаю, является 64-битной, и потратить 2 дня, чтобы импортировать все, весь мой проект и стеклянную рыбу. Надеюсь, это решит проблему. Я на 90% уверен, что мое текущее затмение 64-битное.   -  person Randnum    schedule 25.01.2012
comment
@Randnum: посмотрите в каталоге plugins вашей установки Eclipse. Вы должны увидеть org.eclipse.swt.gtk.linux.platform_version.jar. В этом файле будет указано, какую версию вы используете.   -  person Edward Thomson    schedule 25.01.2012
comment
Спасибо, и я думаю, что исправил хотя бы частичную проблему, изменив JRE, чтобы указать на другую 64-битную версию. Я не уверен, почему он распознает эту среду выполнения как 64, а не другую, но при проверке печатает 64. У меня все еще есть такая же неразрешенная ошибка ссылки, хотя с моей программой JNI. но это могут быть новые вопросы.   -  person Randnum    schedule 25.01.2012
comment
@EdwardThomson выглядит так, будто у меня есть две таких банки, одна говорит x86_64_3.7.1.v3738a.jar, а другая - x86_3.7.1.v3838a.jar.   -  person Randnum    schedule 25.01.2012


Ответы (7)


Добавьте тег -vm в eclipse.ini или ярлык для явного указания JRE. Обратите внимание, что по умолчанию для Windows XP используется CRAPPY JRE, поставляемая с Windows.

-vm "%JAVA_HOME%/bin/javaw.exe"

person Chris Nava    schedule 24.01.2012
comment
Обратите внимание, что формат в eclipse.ini должен иметь -vm в одной строке и значение в следующей. Я не уверен, почему. - person Chris Nava; 25.01.2012
comment
да, я сделал это правильно. на самом деле он распознает новое местоположение, которое я указал, но по какой-то причине он все еще находится в 32-битном режиме, хотя JDK/JRE он распознает как правильный. Как будто есть флаг, который я должен где-то переключить - person Randnum; 25.01.2012
comment
@Randnum, поскольку вы сказали, что используете Linux, пытались ли вы запустить свою программу Java с аргументом виртуальной машины -d64? В версии Oracle Java 1.6 для Windows XP параметры виртуальной машины -d32 и -d64 не существуют. - person ee.; 25.01.2012
comment
Откройте Run Configurations... вашего проекта и проверьте настроенную там среду выполнения. - person Chris Nava; 25.01.2012

В eclipse.ini добавьте:

-Xmx8g
-d64
person Serg    schedule 02.07.2014
comment
Пояснение: Параметр -Xmx8g сообщает Eclipse, что он может использовать до 8 ГБ ОЗУ. Этот параметр на самом деле не нужен, чтобы заставить Eclipse использовать 64-битную JVM. - person Augustin; 08.03.2016
comment
Уточнение: -d64 есть - person Serg; 29.12.2017

У меня работает исправно! . Убедитесь, что ваш путь - c:\Program File, а не c:\Program File (X86) (если вы установили 64-битный JDK, он должен храниться в c:\Program Files)

person invariant    schedule 24.01.2012
comment
извините, я понятия не имею о linux. - person invariant; 24.01.2012

Конфигурация Eclipse объясняется здесь

person Peter Svensson    schedule 24.01.2012
comment
Я изменил ini, и это не сработало. Он продолжает показывать 32 бита на i386. - person Randnum; 25.01.2012

«Установленные JRE» (лучше использовать JDK) используются для создания и запуска вашего кода и могут иметь различную архитектуру или версию Java. JVM, используемая для запуска Eclipse, определена в файле eclipse.ini. Вы должны использовать версию для архитектуры JVM.

person Hauke Ingmar Schmidt    schedule 24.01.2012
comment
Это странно, потому что я не думаю, что на моем компьютере установлена ​​32-битная JDK/JRE, насколько мне известно. Я указал среду выполнения везде, в том числе в файле Eclipse.ini, и он по-прежнему думает, что работает на 32-разрядном компьютере. - person Randnum; 25.01.2012
comment
Какую версию Linux вы используете? Некоторые устанавливают дополнительные JRE, например. для ОпенОфис. Как вы установили JRE? Вы меняли среду выполнения в проекте? - person Hauke Ingmar Schmidt; 25.01.2012
comment
Я использую Red Hat 5, у меня установлено несколько JDK, но я был осторожен, чтобы изменить путь к классам в Linux на новейший 1.6. Я также изменил все переменные среды и выполнения в проекте. На самом деле я не знаю, где на моем компьютере установлена ​​32-битная jvm. По какой-то причине Eclipse выходит из-под контроля и говорит, что он на компьютере i386 и что он работает в 32-битном режиме. однако, когда я выхожу за пределы eclipse и запускаю ту же команду, она показывает правильные 64 бита и компьютер amd64. - person Randnum; 25.01.2012
comment
С Eclipse что-то не так. - person Randnum; 25.01.2012
comment
Подождите... как вы выполняете команду System.getProperty(sun.arch.data.model);' внутри Эклипса? Должен быть какой-то проект... и тогда среда выполнения Eclipse JRE не имеет значения. - person Hauke Ingmar Schmidt; 25.01.2012
comment
Да, это внутри eclispse, хотя я также тестировал его в vim/ из командной строки, и он отображается как 64-битный. Так что я знаю, что это специфично для затмения. Eclipse правильно распознает JDK/JRE, потому что есть системное свойство, которое вы также можете протестировать, и оно работает. - person Randnum; 25.01.2012
comment
Таким образом, вы тестируете конфигурацию проекта или настроенные JRE, это не имеет ничего общего с JRE, с которой работает Eclipse, поэтому вам не нужно возиться с eclipse.ini. - person Hauke Ingmar Schmidt; 25.01.2012
comment
Тогда как указать JVM? - person Randnum; 25.01.2012

Хорошо. Это было довольно головной болью, но я считаю, что у меня есть решение. После изменения eclipse.ini перейдите к свойствам вашего проекта. В настройках запуска/отладки отредактируйте конфигурацию запуска для вашего проекта. Под тегом JRE щелкните установленные JRE. Когда появится это диалоговое окно, нажмите «Поиск». Перейдите в папку с программными файлами, а не в папку x86, и дайте ей выполнить поиск ваших JRE. Когда появится последняя версия, отмените выбор JRE, которая была выбрана в данный момент, и выберите самую последнюю найденную JRE. Я переименовал свой JRE7-64, чтобы я мог определить разницу. Это решило проблему с моей стороны. Удачи

person David    schedule 20.02.2013

Я думаю, что на странице Run Configuration есть ошибка.

Мне пришлось добавить 64-битную JRE в конфигурацию запуска, выбрать ее и УДАЛИТЬ 32-битную запись (даже если она уже не выбрана).

eclipse.ini у меня не работал.

Это Эклипс Луна.

person Keegan Jay    schedule 25.04.2018