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

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

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

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

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

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

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

Ответ 1

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

  • 64-bit ОС
  • 64-bit Java
  • 64-bit Затмение

Ответ 2

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


  • 32-bit ОС | 32-bit JDK | 32-bit Eclipse (только 32-разрядная версия)
  • 64-bit ОС | 32-bit JDK | 32-bit Затмение
  • 64-bit ОС | 64-bit JDK | 64bit 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

Убедитесь, что ваш файл 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

Используйте ОС и Eclipse, как 64-битные, так и 32-битные, сохраняйте их и настройте eclipse.ini.

Ваш файл eclipse.ini находится в папке затмений.

Ответ 5

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

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

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

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

Ответ 6

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

Создайте ярлык для 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 должны быть одинаковыми, конечно.)

Ответ 7

У меня есть несколько версий 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, которые у меня есть на моей машине.

Ответ 8

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

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

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

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

Ответ 9

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

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

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

Ответ 10

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

-vm
yourdrive\java\bin

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

Ответ 11

Как уже упоминалось многими людьми, это проблема с 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.

Ответ 12

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

"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

Это должно сработать.

Ответ 13

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

Ответ 14

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

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

Ответ 15

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

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

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

Ответ 16

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

Ответ 17

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

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

Ответ 18

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

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

Ответ 19

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

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

Ответ 20

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

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

Ответ 21

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

Ответ 22

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

Ответ 23

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

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

Ответ 24

Я хочу использовать другое решение для этой ошибки, особенно для тех, кто хочет использовать 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"

Ответ 25

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

Ответ 26

Если вы используете целую 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.

Ответ 27

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

Ответ 28

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

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

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

Ответ 29

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

Ответ 30

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