Помилка завантаження спільної бібліотеки JNI (JDK)


928

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

Помилка завантаження спільної бібліотеки JNI "C: /JDK/bin/client/jvm.dll" `.

Після цього сила затемнення закривається.

Ось декілька моментів, які я хотів би зробити:

  • Я перевірив, чи існує щось на цьому шляху. Воно існує.
  • My Eclipse та Java SE Kit Kit - це 64-розрядні. Я перевірив свою систему, і вона може обробляти 64-розрядні.
  • Я шукав цю проблему в Google і в Stack Overflow, і знайшов єдину відповідь - завантажити 32-бітні версії JDK і Eclipse.

Завантаження 32-бітних версій - це те, що я хочу зробити лише в крайньому випадку.
Що б запропонували вирішити це питання?


У чому саме була проблема у вашому випадку?
— sjas

4
На мій подив, на мій комп'ютер встановлено 5 або більше Java. Мало того, але виявилося, що я завантажив 32-розрядний Eclipse випадково. Отже, я видалив кожну наявну Java, видалив Eclipse (у Eclipse немає «видалення») та завантажив 64-розрядну програму Eclipse Classic для моєї машини разом із 64-бітною Java (див. Відповідь SPP на це посилання).
— Mxyk

2
Крім того: якщо у когось є проблеми з "видаленням" Eclipse (наприклад, папка не вийде незалежно від того, скільки разів ви видалите її вручну або за допомогою командного рядка), спробуйте видалити її в безпечному режимі з командним рядком. Я не маю уявлення чому мені довелося це робити, але це закінчилось.
— Mxyk

@MikeGates У мене теж була ця проблема, я використовував LockHunter. Відверто. Запуск цього інструмента для роботи в Windows - це занадто велика робота.
— jcollum

Eclipse / Java смокче, якщо мова йде про 64-бітові, то це ганьба ... Найкраща порада, яку я можу дати, - це дотримуватися лише 32 біт. Економте купи часу.
— onknows

Відповіді:


848

Вам потрібно 64-bitтріо:

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

Пояснення : Уявіть, що в програму завантажується нативний код (DLL). Тепер уявіть, що 32-бітна функція хоче викликати 64-бітну або подібну. Те саме з вирівнюванням і розмірами даних, і все. Я думаю, я не повинен розповідати нічого більше = P
— imacake

@androiddeveloper Я думаю, ви змішуєте кілька версій Java. Спробуйте використовувати лише трійку 64.
— Похмурий

Правильно! Мій ноутбук працює на операційній системі x64, але я встановив x86 JDK. Щойно встановлений x64 jdk і проблема відходить. Дякую.
— Нгуен Мінь Бінь

Ця відповідь насправді не зовсім точна. Вам не потрібно запускати 64-розрядні JDK та 64-розрядні Eclipse, якщо ви працюєте на 64-бітній ОС. 64-розрядна ОС може так само добре запустити комбо 32-бітного Java + 32-бітного Eclipse. Що повинно відповідати - це укуси JRE / JDK та Eclipse.
— E-Riz

1
@Tarik так, його 2015 рік і, на жаль, редактор візуальних сторінок (VPE) інструментів JBoss Tool ще роками чекає на 64-розрядне оновлення. Подивіться на відповідь "Робочі пари" нижче, на другу пару. Інструмент JBoss Tools-Plug-in прив'язаний до тієї ж архітектури, яку ви завантажили Eclipse. Отже Eclipse (з JBossTools) повинен бути 32-бітовим, JDK повинен бути 32-бітним, а ОС може бути 64-бітною. 64-бітове затемнення в даний час не працює з інструментами JBoss .... Я пам'ятаю проект під назвою JBossIDE, який працює за допомогою Eclipse, ви повинні використовувати це замість того, щоб встановлювати JBossTools у затемнення. Ганьба вам JBoss, сором і про мозілу.
— Похмурий

315

Робочі пари ОС, JDK та Eclipse:


  • 32-bit ОС | 32-bit JDK | 32-bit Затемнення (лише 32-бітне )
  • 64-bit ОС | 32-bit JDK | 32-bit Затемнення
  • 64-bit ОС | 64-bit JDK| 64bit Затемнення (лише 64-бітне )

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

Кожен з них мав власний запис у змінній PATH, всі працювали більш-менш.

Судячи зі змінних PATH, деякі установки були абсолютно марними, оскільки вони ніколи не використовувалися. Звичайно, на "неактивних" Javas можна було б посилатися вручну зсередини Eclipse, якщо мені це було потрібно, але я ніколи цього не робив, тому мені справді не потрібні. (Принаймні, я так думав у той час ...)

Я прибрав безлад, видалив усі поточні Java, встановив лише 64-розрядний JDK + JRE 1.7.

Один з "установок" 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
— ekinnear

Мммм, це завжди питання ... Документи Oracle кажуть, що він використовує лише перший, але, можливо, щось інше було змінено / вже було на місці та працює. Здається, його завжди щось таке дивне.
— ekinnear

8
щоб перевірити версію 32-бітної чи 64-розрядної версії, відкрийте eclipse.ini та шукайте використовуваний запуск рівнодення (наприклад, org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502)
— Стів О,

У мене був цей комбо з помилкою. 64-розрядна ОС - 32-розрядна JDK - 32-бітна Eclipse, і вона не працює. Я вирішив це за допомогою комбінації: 64-розрядна ОС - 64-розрядна JDK - 64-бітова Eclipse (лише 64-бітна). Змінна% PATH% була оновлена, щоб вказувати на 64-бітну версію Java. Насправді% JAVA_HOME% було оновлено, оскільки ця змінна використовується у значеннях змінної% PATH%.
— thanos.a

1
Саме коментар @ekinnear вирішив мою проблему. Я не впевнений, чому він шукав JVM.dll у моїй папці windows / bin, але, встановивши належний шлях на місце, схоже, це вирішено.
— Джеймс

267

Переконайтеся, що ваш 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файл можна знайти в папці затемнення .


9
Це вирішує проблему. Я додав -vm C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exeрядок у свій файл eclipse.ini, і він запустився просто чудово. Дякуємо за допомогу +1.
— prolink007

1
це добре працює, будь ласка, перевірте свою версію Java, запустіть java -version у консолі та перевірте, що ця версія використовується Eclipse чи ні
— jayesh kavathiya

2
Я зробив це зі своїм Java 6 SDK, і він не працював. Я спробував це ще раз, вказуючи на мій Java 7 SDK, і він спрацював. Я перебуваю на Windows 8 64-розрядні, Java 6 і 7 (обидва 64-бітні) та Eclipse Helios (32-розрядні). Я був готовий видалити та перевстановити 64-розрядний Eclipse, але, схоже, SDK java 7 включає деякий новий інтелект для кращого запуску 32-бітних додатків.
— Райан Шиллінгтон

9
це працює. але потрібно поставити -vm у верхній частині файлу ini; принаймні до -vmargs або --launcher.xxx
— pinkdawn

2
Дуже дуже важливий момент, який я пропустив. Якщо ви використовуєте на зразок: "-vm C: \ ProgramFiles \ Java \ jdk1.6.0_32 \ bin \ javaw.exe" він ніколи не буде працювати правильно "-vm C: \ Program Files \ Java \ jdk1.6.0_32 \ bin \ javaw.exe "Новий рядок після -vm дуже важливий.
— Шкільний хлопчик


42

Ця помилка означає, що архітектура Eclipse не відповідає архітектурі виконання Java, тобто якщо один є 32-розрядним, інший повинен бути таким же, а не 64-розрядним.

Найбільш надійним виправленням є визначення місця JVM у eclipse.ini:

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

Важливо: ці два рядки повинні бути перед -vmargs. Не використовуйте цитати; пробіли дозволені.


Привіт, я працюю з деякого часу тому з цим налаштуванням. Thx
— Billyjoker

32

Ще один варіант:

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

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

Для вашої установки переконайтесь, що місця вказують на правильний каталог встановлення Eclipse та правильний javaw.exeкаталог встановлення.

(Звичайно, 64/32-бітні версії Eclipse та Java повинні бути однаковими.)


Хороші варіанти, але додавання його до ini-файлу, як зазначено вище, має спрацювати
— mr.user1065741

2
Не потрібно змінювати .ini файл. Просто використовуйте 64-бітне комбо для Java та затемнення
— thanos.a

29

У мене встановлено кілька версій Java, і Sun JDK & JRockit, і 32-бітні, і 64-розрядні, і т.д.

Що НЕ працювало:

64-бітове тріо за пропозицією Пітера Радера:

Я використовую 64-бітний Eclipse в 64-розрядної ОС (Windows 7).

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

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, як запропонував Джейеш Каватія:

Я додав у eclipse.ini таке:

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

Примітка:

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


Мені також не довелося видаляти JDK, але я вирішив очистити свою систему, щоб усунути майбутні причини помилок. Я також згадав аргументи В.М. і пояснив, чому вони, очевидно, не можуть працювати на мене. Це ваш вибір, як ви хочете налаштувати вашу систему, залежно від того, що вам справді потрібно.
— sjas

Мені довелося робити обидві речі, але додавання лінії javaw.exe тоді призвело до того, що я все-таки встановив 64-бітний. Це залежить від того, скільки покарань за карму ви маєте заплатити андроїду.
— Джош

Я розвивався роками, і не змінюючи своєї системи (про що я знаю), Eclipse кидає цю помилку. Додавання параметра -vm розібрало його для мене, не потрібно змінювати жодних інших налаштувань чи знімати / перевстановлювати.
— Кносс

18

Для відсутнього jvm.dllфайлу ми можемо надати шлях файлу dll до eclipse.iniфайлу як

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

Тут важливо видалити будь-який пробіл на шляху та подвійні лапки. Це працювало для мене, коли я видаляв цитати та пробіл.

Я сподіваюся, що це комусь допоможе.


1
Це допомогло мені замість -vm javaw.exe
— amj

11

У мене була схожа проблема. Це було вирішено, роблячи наступне.

  • Перемістіть затемнення до програмних файлів (не до програмних файлів (x86) ).
  • Видаліть шлях до 32-бітної версії Java зі змінної середовища "path".

У мене встановлені обидві версії Java, але Eclipse намагався використовувати 32-бітну.


10

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

-vm
yourdrive\java\bin

Зробіть їм перші два рядки вашого eclipse.iniфайлу.


7

Як уже багато людей наголошували, це 32-х та 64-бітова проблема для Eclipse та Java . Ви не можете змішати 32 та 64 біт. Оскільки Eclipse не використовуєтьсяJAVA_HOME , вам, швидше за все, доведеться змінити свій PATH перед запуском Eclipse, щоб переконатися, що ви використовуєте не тільки відповідну версію Java, але й 32 або 64 біт (або змініть файл INI, як зазначив Jayath) .

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

Якщо ви не впевнені, просто запустіть Eclipse, якщо ви отримаєте помилку, змініть свій PATH на іншу "бітну" версію Java, а потім спробуйте ще раз. Потім перемістіть каталог Eclipse у відповідний каталог програмних файлів .


Очевидно, це проблема, оскільки ця сторінка наразі переглядає 700 тис. Доларів ... і через рік, мабуть, немає жодних виправлень, що не передбачає перекочування в змінних оточення просто для того, щоб запустити IDE!
— Ciaran Gallagher

6

Крім того, отримайте ту саму "бітну" версію 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

Це повинно зробити трюк.


6

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


6

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

  1. Ви розумієте, що програмні файли та програмний файл (x86) - це дві різні папки ... x86 означає 32-бітну версію програм, а перша - 64-бітна версія.

  2. Якщо у вас встановлено кілька версій Java з різними версіями біт-версій та версій, що може статися з такою кількістю відкритих джерел IDE , менеджерів, адміністративних консолей, найкращим варіантом є встановлення аргументу VM безпосередньо у eclipse.iniфайлі. Якщо ви цього не зробите, Eclipse зійде з розуму і спробує пошукати себе, що не є добре.


5

Один з найпростіших способів вирішити це - скопіювати jreпапку з встановленого JDK в інсталяційну папку Eclipse. Переконайтеся, що JDK, з якого ви копіюєте, має таку ж архітектуру, що і ваша установка Eclipse.

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


Я робив те ж саме давно, але для eclipse-jee-juno-SR1-win32 та Java6 я не міг змусити його працювати, на цей раз. Ви також редагували eclipse.ini з абсолютним шляхом до jre?
— користувач77115

У мене також є Eclipse 64 ширина jdk 7 64bit, але титан у мене високий, він не може завантажити jni shared dll.
— realtebo

Через божевільні автоматичні оновлення Window, коли є оновлення для JAVA, це блокує запуск мого Eclipe. Вищевказане рішення - це найпростіший спосіб самостійної роботи, не піклуючись про автоновлення. Дякую!
— Jyo the

4

Так, просто переконайтеся, що ваші версії Eclipse та JDK обидва 64-розрядні. Просто переконайтесь, що все правильно видалено JDK та встановіть його у файлах програми, а не у програмних файлах (x86) . Принаймні, це вирішило мою проблему.


4

Просто перевірте змінну середовища PATH. У розділі Мій комп'ютер -> Властивості -> Додаткові параметри системи -> Змінні середовища -> (ліве верхнє вікно "Змінні користувача для" деякого імені ПК "") просто перевірте змінну PATH. Якщо його немає, створіть його за допомогою наступного -> C: \ Program Files (x86) \ Java \ jre7 \ bin <-

Я зіткнувся з тією ж проблемою після того, як оновив Eclipse. Я виявив, що шлях запитував 64-бітну версію, але у мене був 32-бітний шлях у dif. Це було мені корисно. PS: У мене 64-бітна ОС, 32-розрядна JRE та 32-бітна Eclipse. Все працює чудово :)


4

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

Краще встановіть Jre 6 32 біт. Це справді працює.


3

Завантажили 64-бітний JVM з сайту та встановили його вручну та оновили змінну системного шляху. Це вирішило питання.

  1. За замовчуванням встановлений JVM у моїй системі був у "C: \ Program Files
    (x86) \ Java \ jre7"
  2. Вручну встановлений JVM був встановлений у "C: \ Program Files \ Java \ jre7" і після оновлення цього паштету до змінної системного шляху він працював.

3

Дякую, misterfrb , я зрозумів, що Eclipse доводить цю помилку, тому що я щойно встановив пакет Oracle 10g Developer , і він шукав jvm.dllфайл у C:\DevSuiteHome_1папці (я, мабуть, вирішив знову встановити JDK разом із набором для розробників).

Після вилучення рядків DevSuiteHome зі змінної шляхів та додавання місця корекції для 64-розрядних jvm.dll(не впевнений, що це потрібно, не намагайтеся без цього), Eclipse знову працював, і набір розробників все ще робить це.


3

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


3

У мене була така ж проблема після оновлення з Java 6 до Java 7. Після того як я видалив Java 6 (64 біт) і перевстановив Java 7 (64 біт), Eclipse запрацював. :)


3

Важливо додати параметр -vm та його значення на 2 рядки НА ПОЧАТКУ eclipse.ini

-vm C: \ програмні файли \ Java \ jdk1.7.0_45 \ bin \ javaw.exe


3

Я хочу надати ще одне рішення для цієї помилки, особливо для тих, хто хоче використовувати 32-розрядні та 64-бітні Eclipse в одній системі.

Eclipse запуститься за допомогою JRE / JDK в jreпідкаталозі, якщо він існує. (STE або інша IDE на основі затемнення також підтримують цю функцію ...)

Рішення полягає у створенні з'єднання каталогів за допомогою 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: \ Програмні файли \ Java \ jdk1.8.0"

До речі, з'єднання видалення каталогу НЕ видалить жоден файл. Якщо ви створили неправильне посилання, ви можете видалити його за допомогою провідника файлів або rmdirкоманди.

rmdir "d: \ devTool \ eclipse \ jre"



2

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

  1. Знайдіть jvm.dll у своєму каталозі JRE: C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. Знайдіть jvm.dll у каталозі JDK: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. Скопіюйте jvm.dllфайл з JRE у свій JDK каталог та перезапишіть файл jvm.dll у JDK.

Не забудьте зробити резервну копію, про всяк випадок. Не потрібно встановлювати чи видаляти що-небудь, пов’язане з Java.


2

Те саме сталося і зі мною. У мене було 64-бітове Eclipse, але мій JDK був 32-розрядним. Тому я встановив 64-бітну версію, і зараз це нормально.


2

Я не впевнений, чому, але у мене було встановлено jre в моєму каталозі c: \ windows і java.exe та javaw.exe в моєму каталозі Windows \ system32.

Очевидно, ці каталоги отримували пріоритет навіть ПІСЛЯ додавання прапора -vm до мого файлу eclipse.ini.

Видалити їх звідси виправили проблему для мене.



1

На сторінці завантаження Eclipse слід записати "JRE 32 біт" або "JRE 64 біт", а не "Windows 32 біт" або "Windows 64 біт".

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.