Не удалось загрузить общую библиотеку JNI (JDK)

870

Когда я пытаюсь открыть Eclipse, во всплывающем диалоговом окне указано:

Не удалось загрузить общую библиотеку JNI "C:/JDK/bin/client/jvm.dll".

После этого сила Eclipse закрывается.

Вот несколько моментов, которые я хотел бы сделать:

  • Я проверил, существует ли что-либо на этом пути. Он существует.
  • My Eclipse и Java SE Development Kit являются 64-разрядными. Я проверил свою систему, и она может обрабатывать 64-битные.
  • Я искал эту проблему в Google и в Stack Overflow, и единственный ответ, который я нашел, - загрузить 32-разрядные версии JDK и Eclipse.

Загрузка 32-разрядных версий - это то, что я хочу сделать только в крайнем случае.
Что было бы предложено решить эту проблему?

  • 0
    Что именно было проблемой в вашем случае?
  • 4
    К моему удивлению, на моем компьютере было установлено 5 или около того Java. Мало того, но оказалось, что я скачал 32-битный Eclipse случайно. Итак, я удалил все имеющиеся у меня Java, удалил Eclipse (у Eclipse нет «удаления») и загрузил 64-битную версию Eclipse Classic для моей машины вместе с 64-битной Java (см. Ответ SPP по этой ссылке).
Показать ещё 7 комментариев
Теги:
jni

38 ответов

775
Лучший ответ

Вам нужно 64-битное трио:

  • 64-разрядная ОС
  • 64-разрядная Java
  • 64-битное Eclipse
  • 0
    Объяснение : Представьте, что в приложение загружается собственный код (DLL). Теперь представьте, что 32-битная функция хочет вызвать 64-битную или аналогичную. То же самое с выравниванием и размерами данных и всем. Я думаю, мне не нужно больше ничего рассказывать = P
  • 0
    @androiddeveloper Я думаю, вы смешиваете несколько версий Java. Попробуйте использовать только 64 трио.
Показать ещё 11 комментариев
287

Рабочие пары ОС, JDK и Eclipse:


  • 32-разрядная ОС - 32-разрядная JDK - 32-разрядная Eclipse (только 32-разрядная версия)
  • 64-разрядная ОС - 32-разрядный JDK - 32-разрядный Eclipse
  • 64-разрядная ОС - 64-разрядная JDK-64-разрядная Eclipse (только для 64-разрядных)

У меня было установлено несколько JDK и JRE.

У каждого из них была собственная запись в переменной PATH, все работало более или менее.

Судя по переменным PATH, некоторые установки были совершенно бесполезны, поскольку они никогда не использовались. Разумеется, "неактивные" Javas можно было бы направить вручную из Eclipse, если нужно, но я этого никогда не делал, поэтому я им действительно не нуждался. (По крайней мере, я так думал в то время...)

Я очистил беспорядок, деинсталлировал все текущие Java, установил только JDK + JRE 1.7 64-bit.

Одна из установок Eclipse "не удалась после этого с Failed to Load the JNI shared Library и заданного пути относительно нового установленного JDK, где он считал jvm.dll.

Неудача Eclipse была единственной из всех моих IDE, которая по-прежнему была 32-разрядной версией в моей 64-разрядной настройке.

Добавление аргументов VM, как это часто упоминалось, в eclipse.ini было бесполезно в моем случае (потому что я имел дело только с неправильным JDK/JRE).

Мне также не удалось выяснить, как проверить, была ли эта Eclipse 32-разрядной или 64-разрядной версией (я не мог найти ее в диспетчере задач, так как эта установка "Eclipse" не запускалась. И так как прошло некоторое время с тех пор, как я ее установил, я тоже не мог вспомнить ее версию.)

Если вы используете более новую JDK и более старую JRE, у вас могут быть проблемы, но, скорее всего, появится java.lang.UnsupportedClassVersionError, IIRC.

  • 3
    Он должен использовать только первый \ bin в переменной Path
  • 0
    Мммм, это всегда вопрос ... Документы Oracle говорят, что он использует только первый, но, возможно, что-то еще было изменено / уже было на месте и работает. Кажется, это всегда что-то странное, как это.
Показать ещё 4 комментария
242

Убедитесь, что ваш файл eclipse.ini содержит следующие строки.

-vm
C:\path\to\64bit\java\bin\javaw.exe

Мой eclipse.ini например:

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.2.R36x_v20101222
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
-vm
C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exe
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

Используйте OS и Eclipse как 64-разрядные, так и обе 32-разрядные версии, и config eclipse.ini.

Ваш файл eclipse.ini можно найти в папке eclipse.

  • 9
    Это решает проблему. Я добавил -vm C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exe в мой файл eclipse.ini, и он запустился очень хорошо. Спасибо за помощь +1.
  • 1
    это нормально работает, пожалуйста, проверьте вашу версию Java, запустите java -version в консоли и убедитесь, что эта версия используется Eclipse или нет
Показать ещё 8 комментариев
56

У меня была та же проблема

Я разрешил его, установив 64-битную JVM из

http://www.java.com/en/download/manual.jsp

33

Другой вариант:

Создайте ярлык для Eclipse.exe. Откройте ярлык и измените цель на:

"C:\Program Files\eclipse\eclipse.exe" -vm "c:\Program Files\Java\jdk1.7.0_04\bin\javaw.exe"

Для вашей установки убедитесь, что в местах указывается правильный каталог установки Eclipse и правильный каталог установки javaw.exe.

(64-разрядные версии Eclipse и Java должны быть одинаковыми, конечно.)

  • 0
    Хорошие варианты, но добавление их в INI-файл, как указано выше, должно работать
  • 2
    Нет необходимости изменять файл .ini. Просто используйте 64-битную комбинацию для Java и Eclipse
27

Эта ошибка означает, что архитектура Eclipse не соответствует архитектуре среды выполнения Java, то есть если одна из 32-разрядных, то другая должна быть одинаковой, а не 64-разрядной.

Самое надежное решение - указать местоположение JVM в eclipse.ini:

-vm
C:\Program Files (x86)\Java\jdk1.7.0_55\bin\javaw.exe

Важно: Эти две строки должны появиться до -vmargs. Не используйте кавычки; пробелы разрешены.

  • 0
    Привет, я работаю некоторое время назад с этой установкой .ini. Должен ли я обновить архитектуру до 64-битной или я могу игнорировать факт наличия разных архитектур ?? Спасибо
27

У меня есть несколько версий Java, как Sun JDK, так и JRockit, как 32-разрядные, так и 64-разрядные и т.д., и столкнулись с этой проблемой при новой установке 64-разрядного Eclipse для Java EE (JUNO).

Что НЕ работало:

64-битное трио, предложенное Питером Радером:

Я использую 64-разрядный Eclipse в 64-разрядной ОС (Windows 7).

Я обеспечил Sun JDK 7 64-битная версия по умолчанию java. Когда я набрал "java -version" из командной строки (cmd.exe), был возвращен 64-бит Sun JDK 7...

java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

Это не решило проблему для меня.

Что работает DID:

Добавление опции -vm в eclipse.ini, как предложено Jayesh Kavathiya:

Я добавил следующее в eclipse.ini:

-vm
C:/apps/java/jdk7-64bit/bin/javaw.exe

Примечание:

Мне не пришлось удалять любую из различных версий JDK или JRE, которые у меня есть на моей машине.

  • 0
    Мне также не пришлось удалять JDK, но я решил очистить свою систему, чтобы устранить будущие причины ошибок. Я также упомянул аргументы виртуальной машины и объяснил, почему они не могут работать на меня. Это ваш выбор, как вы хотите настроить свою систему, в зависимости от того, что вам действительно нужно.
  • 0
    Я должен был сделать обе вещи, но добавление строки javaw.exe привело меня к установке всего на 64 бит, в любом случае. Это зависит от того, сколько кармы вы должны заплатить на андроид.
Показать ещё 1 комментарий
17

Для отсутствующего файла jvm.dll мы можем указать путь к файлу dll в файле eclipse.ini как

-vm
C:\Progra~1\Java\jdk1.6.0_38\jre\bin\server\jvm.dll

Здесь важно удалить любое пространство в пути и двойные кавычки. Это сработало для меня, когда я удалил кавычки и пробелы.

Я надеюсь, что это поможет кому-то.

  • 1
    Это помогло мне вместо -vm javaw.exe
  • 0
    Это правильный ответ !!
8

Конечно, вам нужна совместимая версия JDK и Eclipse, но вам также нужно добавить в файл eclipse.ini следующие строки:

-vm
yourdrive\java\bin

Сделайте их первыми двумя строками вашего файла eclipse.ini.

8

У меня была аналогичная проблема. Было решено сделать следующее.

  • Переместите Eclipse в программные файлы (а не в программные файлы (x86)).
  • Удалите путь к 32-разрядной версии Java из переменной среды "путь".

У меня установлены обе версии Java, но Eclipse продолжал пытаться использовать 32-разрядную версию.

7

Как уже упоминалось многими людьми, это проблема с 32 по 64 бит для Eclipse и Java. Вы не можете смешивать 32 и 64 бит. Поскольку Eclipse не использует JAVA_HOME, вам, скорее всего, придется изменить свою PATH до запуска Eclipse, чтобы убедиться, что вы используете не только подходящую версию Java, но также и 32 или 64 бит (или модифицируете INI файл как Джаят отметил).

Если вы устанавливаете Eclipse из общего ресурса компании, вы должны убедиться, что можете указать, какую версию Eclipse вы разархивируете, и разархивировать в соответствующий каталог программных файлов, чтобы отслеживать, что это такое, а затем изменить PATH (либо (через Windows) Панель управления → Система или набор PATH=/path/to/32 or 64bit/java/bin;%PATH% (возможно, создайте пакетный файл, если вы не хотите его устанавливать в своей системе и/или переменных пользовательской среды). Помните, что 32-разрядный файл находится в файлах программы (x86).

Если вы не уверены, просто запустите Eclipse, если вы получите ошибку, измените свой PATH на другую "bit" версию Java и повторите попытку. Затем переместите каталог Eclipse в соответствующий каталог Program Files.

  • 0
    Это явно проблема, так как эта страница в настоящее время просматривает 700 тыс. Просмотров ... и год спустя, по-видимому, нет исправления, которое не включало бы поиск переменных среды только для запуска IDE!
6

Ответы выше меня заставили меня искушаться так сильно, что я решил иссушить все возможные комбинации с ОС, Eclipse и JVM трио. В любом случае, кто бы ни копался и не читал мой пост, проверьте следующее как горячую точку (я - пользователь Windows 7).

  • Вы понимаете, что программные файлы и программный файл (x86) - это две разные папки... x86 означает 32-разрядную версию программ, а первая - 64-разрядная версия.

  • Если у вас есть несколько версий Java, установленных с разной версией битов и выпусков, что обязательно произойдет с таким количеством с открытым исходным кодом IDEs, менеджерами, административными консолями, лучшим вариантом является установка аргумента VM непосредственно в файле eclipse.ini. Если вы этого не сделаете, Eclipse сойдет с ума и попытается найти себя, что плохо.

6

Вы можете решить эту проблему так же, как и многие другие. Вам нужно, чтобы Eclipse и JDK были 32-битными или оба на 64-битных. Архитектура ОС не имеет значения, в то время как остальные остаются в одном и том же типе архитектуры.

6

В качестве альтернативы, получите ту же "бит" версию JRE и Eclipse, а затем создайте новый ярлык с указанной целью (замените установленную JRE и Eclipse location/path):

"C:\studio\eclipse.exe" -vm "C:\Program Files\Java\jre7\bin\server\jvm.dll" eclipse.vm="C:\Program Files\Java\jre7\bin\server\jvm.dll" java.home="C:\Program Files\Java\jre7" java.runtime.version=1.7.0

Это должно сделать трюк.

  • 0
    Установка JRE работал для меня.
5

Вам нужно удалить все старые [JREs] [1], а затем установить новый... У меня была такая же проблема, и теперь я ее решаю. Я:

Лучше установить Jre 6 32 бит. Это действительно работает.

5

Да, просто убедитесь, что ваши версии Eclipse и JDK являются 64-разрядными. Просто убедитесь, что все правильно удалено JDK и установите его в Program Files, а не в Program Files (x86). По крайней мере, это разрешило мою проблему.

5

Одним из простых способов его устранения является копирование папки jre из установленного JDK в папку установки Eclipse. Убедитесь, что JDK, который вы копируете, имеет ту же архитектуру, что и ваша установка Eclipse.

Мне пришлось настроить свою машину таким образом, потому что я запускаю на своей машине как Eclipse, так и Appcelerator Titanium Studio. Студии требуется 32-разрядная Java, а для Eclipse требуется 64-разрядная версия.

  • 0
    Я делал то же самое давным-давно, но для eclipse-jee-juno-SR1-win32 и Java6 я не смог заставить его работать, на этот раз. Вы также редактировали eclipse.ini с абсолютным путем к jre?
  • 0
    У меня также есть Eclipse 64 width jdk 7 64bit, но высокий титан мне не удается загрузить jni shared dll.
Показать ещё 1 комментарий
4

У меня была такая же проблема после обновления с Java 6 до Java 7. После удаления Java 6 (64-разрядной версии) и переустановки Java 7 (64 бит) работала Eclipse.:)

4

Простой, у меня 64-разрядная ОС, 32-разрядная Eclipse и установлены как JDK 32, так и 64... Я просто удаленные 64-разрядные JDK и Eclipse работают нормально.

4

Просто проверьте переменную среды PATH. В "Мой компьютер" → "Свойства" → "Расширенные настройки системы" → "Переменные среды" → (левое верхнее окно "Пользовательские переменные для" имени ПК "), просто проверьте переменную PATH. Если он не существует, создайте его со следующим → C:\Program Files (x86)\Java\jre7\bin < -

Я столкнулся с той же проблемой после обновления моего Eclipse. Я обнаружил, что путь спросил 64-битную версию, но у меня был 32-разрядный путь. Это было полезно для меня. P.S.: У меня 64-разрядная ОС, 32-разрядная JRE и 32-разрядная Eclipse. Все отлично работает:)

4

Загрузила 64-битную JVM с сайта и установила ее вручную и обновила переменную пути системы. Это решило проблему.

  • По умолчанию JVM установлен в моей системе в "C:\Program Files
    (x86)\Java\jre7 "
  • Установленная вручную JVM установлена ​​в "C:\Program Files\Java\jre7" и после обновления этого патча до системы переменная пути, с которой она работала.
4

Спасибо misterfrb, я понял, что Eclipse давал эту ошибку, потому что я только что установил пакет разработчика Oracle 10g, и он искал jvm.dll в папке C:\DevSuiteHome_1 (я должен был установить JDK снова вместе с пакетом разработчика).

После удаления строк DevSuiteHome из переменной paths и добавления местоположения коррекции для 64-битного jvm.dll (не уверен, что это было необходимо, не пытались без него), Eclipse снова работал, а пакет разработчика по-прежнему работает.

3

Крайне важно добавить параметр -vm и его значение на 2 строки В НАЧАЛЕ eclipse.ini

-vm C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe

3

Убедитесь, что вы запускаете Eclipse с правами администратора.

  • 5
    Должен ли это быть комментарий?
  • 0
    Это не сработало для меня.
2

У вас есть правильная версия JAVA_HOME и PATH в переменных окружения.

2

Я не уверен, почему, но я установил jre в мою директорию c:\windows и java.exe и javaw.exe внутри моего каталога windows\system32.

Очевидно, что эти каталоги получали приоритет даже после добавления флага -vm в мой файл eclipse.ini.

Удалите их здесь, исправил проблему для меня.

2

То же самое произошло со мной. У меня был 64-битный Eclipse, но мой JDK был 32-битным. Поэтому я установил 64-битную версию, и сейчас все в порядке.

2

Если вы используете целую 64-битную трио, и она по-прежнему не работает (я пришел к этой проблеме при запуске Android Monitor в Intellij Idea), вероятно, неправильный jvm.dll используется против того, что ожидает ваша Java. Просто выполните следующие действия:

  • Найдите jvm.dll в каталоге JRE: C:\Program Files\Java\jre7\server\bin\jvm.dll

  • Найдите jvm.dll в каталоге JDK: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  • Скопируйте jvm.dll из JRE drectory в каталог JDK и перезапишите jvm.dll в JDK.

Не забудьте сделать резервную копию на всякий случай. Нет необходимости устанавливать или удалять все, что связано с Java.

2

И для пользователей PDT - избегать Страница загрузки Zend - у нее нет связанных 64-разрядных загрузок.

Используйте сам сайт Elipse.

У вышеупомянутой ссылки был более старый 3.6 Eclipse, который затем не смог обновить себя из-за Eclipse Bug # 317785.

Мое решение состояло в том, чтобы просто установить 32-разрядную Java вместе с 64-битным - это позволило работать с установщиком Zend.

Это удручает, что количество Java/Eclipse cruft должно пройти через PHP IDE.

  • 0
    Я перешел на PHPStorm - по-прежнему на основе Java - но без излишеств :)
2

Вы можете установить 32-разрядную версию JDK на 64-битной машине. См. Загрузка JDK 7.

  • 1
    Ваш ответ не поможет. Уже известно, что это возможно. ОП хочет избежать этого.
1

Я хочу использовать другое решение для этой ошибки, особенно для тех, кто хочет использовать 32-разрядную и 64-разрядную Eclipse в одной системе.

Запуск Eclipse с использованием JRE/JDK в подкаталоге jre, если он существует. (STS или другая среда, основанная на Eclipse, также поддерживают эту функцию...)

Решение представляет собой создание соединения каталога с помощью команды mklink.exe, которая существует в Windows Vista или более новой версии (junction.exe предлагает аналогичную функцию для Windows 2000/XP)
Откройте окна командной строки и выполните следующую команду:

mklink/j "$ ECLIPSE-HOME/jre" "$ JDK_or_JRE_home"

Конечно, если Eclipse для 64-битной Windows, архитектура JDK/JRE должна быть одинаковой.

Предположим:

  • Eclipse for windows x86_64 установлен в d:\devTool\eclipse
  • JDK for windows x64 установлен в C:\Program Files\Java\jdk1.8.0

Команда для создания папки jre будет следующей:

mklink/j "d:\devTool\eclipse\jre" "C:\Program Files\Java\jdk1.8.0"

BTW, удалить соединение каталога будет НЕ удалить любой файл. Если вы создаете неверную ссылку, ее можно удалить с помощью проводника файлов или команды rmdir.

rmdir "d:\devTool\eclipse\jre"

1

В моем случае я попытался запустить Java из командной строки и получил эту ошибку

Ошибка: не удалось открыть "C:\Windows\jre\lib\amd64\jvm.cfg"

Это означало, что "java" искал в PATH, начиная с этого неправильного каталога. Удаление папки C:\Windows\jre\разрешило проблему

1

На странице загрузки Eclipse должно быть написано "JRE 32 бит" или "JRE 64 бит", а не "32 бита Windows" или "64 бит Windows".

Обязательно используйте правильную версию, совместимую с вашим JDE, как было сказано ранее.

0

Установка JDK 1.8._91 (смешанный режим) - это еще одно решение для этого!

0

Эта ошибка, которую мы получаем из-за разной версии 32-разрядной версии Java версии.

0

Самое простое решение - включить конкретную JRE в eclipse.ini:

wiki.eclipse.org/Eclipse.ini

С этим вы можете запустить практически любую версию Eclipse

  • 0
    Мне очень нравится этот ответ, потому что он ссылается на официальную документацию. Прямо сейчас ссылка выглядит неработающей. Буду рад, если вы обновите ссылку.
0

У меня была та же проблема. с 64-битной ОС все должно быть 64 бит. Java и Eclipse. Я пробовал все методы в stackoverflow, а также в youtube. не из них работали для меня, пока я не нашел этот простой метод.

Я установил загрузку Cnet из 64-битной java-формы, и проблема была автоматически исправлена. Я упомянул об источнике, потому что это слишком просто для google и перейдите на первый Cnet lint, а не на официальный сайт, если вы новая пчела.

p.s. если у вас есть пакет Android ADT и попытался открыть из него eclipse и получил ту же ошибку, вы также можете исправить эту проблему с помощью этого метода.

0

Я испытал все ошибки Eclipse, и это один из них. Проблема заключается в 64-разрядной версии Eclipse. Загрузите 32-разрядную версию и запустите ее.

Сообщество Overcoder
Наверх
Меню