Caricamento della libreria condivisa JNI (JDK) non riuscito


928

Quando provo ad aprire Eclipse , una finestra di dialogo pop-up indica:

Impossibile caricare la libreria condivisa JNI "C: /JDK/bin/client/jvm.dll" `.

In seguito, la forza di Eclipse si chiude.

Ecco alcuni punti che vorrei fare:

  • Ho controllato per vedere se esiste qualcosa su quel percorso. Esiste.
  • My Eclipse e Java SE Development Kit sono entrambi a 64 bit. Ho controllato il mio sistema e può gestire 64 bit.
  • Ho cercato questo problema su Google e su Stack Overflow e l'unica risposta che ho trovato è stata quella di scaricare le versioni a 32 bit di JDK ed Eclipse.

Scaricare le versioni a 32 bit è qualcosa che voglio solo fare come ultima risorsa.
Cosa sarebbe stato suggerito per risolvere questo problema?


Qual è stato esattamente il problema nel tuo caso?
sabato

4
Con mia sorpresa, avevo installato circa 5 Java sul mio computer. Non solo, ma ho scoperto che ho scaricato Eclipse a 32 bit per errore. Quindi, ho disinstallato ogni Java che avevo, cancellato Eclipse (Eclipse non ha una "disinstallazione") e scaricato Eclipse Classic 64-bit per la mia macchina, insieme a un Java a 64-bit (vedere la risposta di SPP per quel link).
Mxyk,

2
Inoltre: se qualcuno ha problemi a "eliminare" il proprio Eclipse (ad es. La cartella non andrà via, non importa quante volte lo si rimuove manualmente o tramite prompt dei comandi), provare a cancellarlo utilizzando la modalità provvisoria con il prompt dei comandi .. Non ho idea perché ho dovuto farlo, ma alla fine ha funzionato.
Mxyk,

@MikeGates Ho avuto anche quel problema, ho usato LockHunter. Antipatico. Far funzionare questo strumento su Windows è troppo lavoro.
jcollum,

Eclipse / Java fa schifo quando si tratta di 64 bit, è una disgrazia. Il miglior consiglio che posso dare è di attenersi solo a 32 bit. Risparmia un sacco di tempo.
conosce il

Risposte:


848

Hai bisogno di un 64-bittrio:

  • 64-bit OS
  • 64-bit Giava
  • 64-bit Eclisse

Spiegazione : Immagina che il codice nativo (DLL) venga caricato in un'applicazione. Ora immagina che una funzione a 32 bit voglia chiamarne una a 64 bit o simile. Lo stesso vale per l'allineamento, le dimensioni dei dati e tutto il resto. Immagino di non dover dire altro = P
imacake

@androiddeveloper immagino che mescoli più versioni java. Prova a usare solo il 64 trio.
Grim

Correttamente! Il mio laptop è in esecuzione su x64 OS ma ho installato x86 JDK. Ho appena installato x64 jdk e il problema scompare. Grazie.
Nguyen Minh Binh,

Questa risposta in realtà non è del tutto accurata. Non è necessario eseguire JDK a 64 bit ed Eclipse a 64 bit se si utilizza un sistema operativo a 64 bit. Il sistema operativo a 64 bit può anche eseguire una combinazione di Java a 32 bit + Eclipse a 32 bit. Ciò che deve corrispondere è la bitterness di JRE / JDK ed Eclipse.
E-Riz,

1
@Tarik sì, è il 2015 e sfortunatamente il Visual Page Editor (VPE) di JBoss Tools è ancora in attesa da anni per un aggiornamento a 64 bit. Guarda la risposta "Coppie di lavoro" di seguito, alla seconda coppia. Il plug-in JBoss Tools è associato alla stessa architettura che hai scaricato Eclipse. Quindi Eclipse (con JBossTools) deve essere a 32 bit, JDK deve essere a 32 bit e il sistema operativo può essere a 64 bit. Un'eclipse a 64 bit attualmente non funziona con JBoss Tools .... Ricordo un progetto chiamato JBossIDE che funziona con Eclipse, devi usarlo invece di installare JBossTools in eclipse. Vergogna a te JBoss, vergogna anche a Mozilla.
Grim

315

Accoppiamenti operativi di OS, JDK ed Eclipse:


  • 32-bit OS | 32-bit JDK | 32-bit Eclipse (solo 32 bit )
  • 64-bit OS | 32-bit JDK | 32-bit Eclisse
  • 64-bit OS | 64-bit JDK| 64bit Eclipse (solo 64 bit )

Avevo installato diversi JDK e JRE.

Ognuno di loro aveva la propria voce nella variabile PATH, tutto funzionava più o meno.

A giudicare dalle variabili PATH, alcune installazioni erano completamente inutili, poiché non sono mai state utilizzate. Ovviamente, i Javas "inattivi" potrebbero essere referenziati manualmente da Eclipse se ne avessi bisogno, ma non l'ho mai fatto, quindi non ne avevo davvero bisogno. (Almeno lo pensavo in quel momento ...)

Ho ripulito il casino, ho disinstallato tutti gli attuali Java, ho installato solo JDK + JRE 1.7 a 64 bit.

Una delle "installazioni" di Eclipse è fallita in seguito con il Failed to Load the JNI shared Librarye un determinato percorso relativo al JDK appena installato dove pensava jvm.dllfosse.

Il fallimento di Eclipse era l'unico di tutti i miei IDE che era ancora una versione a 32 bit sulla mia configurazione altrimenti a 64 bit.

Aggiunta di argomenti VM, come spesso menzionato, in eclipse.ini mio caso non è stata utile (perché avevo solo JDK / JRE sbagliato a cui fare riferimento).

Non sono stato inoltre in grado di scoprire come verificare se questa Eclipse fosse una versione a 32 o 64 bit (non sono riuscito a cercarlo nel Task Manager , poiché questa "installazione" di Eclipse non si avviava. è passato un po 'di tempo da quando l'ho installato, non riuscivo nemmeno a ricordare la sua versione.)

Nel caso in cui utilizzi un JDK più recente e un JRE più vecchio , potresti anche avere problemi, ma è più probabile che java.lang.UnsupportedClassVersionErrorappaia, IIRC .


3
Dovrebbe usare solo il primo \ bin in cui si trova nella variabile Path
ekinnear il

Mmmm, questa è sempre la domanda ... I documenti di Oracle dicono che usa solo il primo, ma forse qualcos'altro veniva cambiato / era già in atto e funzionante. Sembra che sia sempre qualcosa di strano.
ekinnear,

8
per verificare quale versione a 32 o 64 bit, apri eclipse.ini e cerca il programma di avvio dell'equinozio utilizzato (ad esempio org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502)
Steve Oh

Ho avuto questa combo con l'errore. Sistema operativo a 64 bit - JDK a 32 bit - Eclipse a 32 bit e non funziona. L'ho risolto con questo combo: sistema operativo a 64 bit - JDK a 64 bit - Eclipse a 64 bit (solo 64 bit). La variabile% PATH% è stata aggiornata per puntare alla versione java a 64 bit. In realtà% JAVA_HOME% è stato aggiornato poiché questa variabile viene utilizzata nei valori della variabile% PATH%.
thanos.a

1
È stato il commento di @ekinnear a risolvere il mio problema. Non sono sicuro del motivo per cui cercava il file JVM.dll nella mia cartella windows / bin, ma la creazione del percorso corretto sembra averlo risolto.
James

267

Assicurati che il tuo eclipse.inifile includa le seguenti righe.

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

Il mio eclipse.iniper esempio:

-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

Usa OS ed Eclipse a 64 bit o entrambi a 32 bit mantieni lo stesso e config eclipse.ini.

Il tuo eclipse.inifile può essere trovato nella tua cartella eclipse .


9
Questo risolve il problema. Ho aggiunto la -vm C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exelinea al mio file eclipse.ini e si è avviato bene. Grazie per l'aiuto +1.
prolink007

1
funziona bene, controlla la tua versione di Java, esegui java -version in una console e controlla che questa sia la versione utilizzata da Eclipse o meno
jayesh kavathiya,

2
L'ho fatto con il mio Java 6 SDK e non ha funzionato. L'ho provato di nuovo, indicando il mio Java 7 SDK, e ha funzionato. Sono su Windows 8 a 64 bit, Java 6 e 7 (entrambi a 64 bit) ed Eclipse Helios (a 32 bit). Ero pronto a disinstallare e reinstallare Eclipse 64-bit, ma sembra che l'SDK di Java 7 includa alcune nuove informazioni per eseguire meglio le app a 32 bit.
Ryan Shillington,

9
questo funziona. ma è necessario inserire -vm nella parte superiore del file ini; almeno prima di -vmargs o --launcher.xxx
pinkdawn il

2
Punto molto molto importante che mi mancava. Se usi come: "-vm C: \ ProgramFiles \ Java \ jdk1.6.0_32 \ bin \ javaw.exe" non funzionerà mai nel modo corretto "-vm C: \ Programmi \ Java \ jdk1.6.0_32 \ bin \ javaw.exe "La nuova riga dopo -vm è molto importante.
School Boy,


42

Questo errore indica che l'architettura di Eclipse non corrisponde all'architettura del runtime Java, ovvero se uno è a 32 bit l'altro deve essere lo stesso e non a 64 bit.

La soluzione più affidabile è specificare la posizione JVM in eclipse.ini:

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

Importante: queste due righe devono precedere -vmargs. Non usare le virgolette; gli spazi sono ammessi.


Ciao, sto lavorando da qualche tempo con questa installazione .ini, dovrei aggiornare l'architettura a 64 bit o posso ignorare il fatto di avere architetture diverse? Thx
Billyjoker

32

Un'altra opzione è:

Creare un collegamento a Eclipse.exe. Apri il collegamento e modifica l'obiettivo in:

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

Per la tua installazione, assicurati che le posizioni puntino alla directory di installazione Eclipse corretta e alla javaw.exedirectory di installazione corretta .

(Le versioni a 64/32 bit di Eclipse e Java devono essere uguali, ovviamente.)


Buone opzioni ma aggiungendolo al file ini come sopra dovrebbe funzionare
mr.user1065741

2
Non è necessario modificare il file .ini. Usa la combinazione a 64 bit per java ed eclipse
thanos.a

29

Ho installato più versioni di Java, sia Sun JDK che JRockit, sia a 32 bit che a 64 bit, ecc. E ho riscontrato questo problema con una nuova installazione di Eclipse per Java EE (JUNO) a 64 bit.

Cosa NON ha funzionato:

Trio a 64 bit come suggerito da Peter Rader:

Sto usando Eclipse a 64 bit sul sistema operativo a 64 bit (Windows 7).

Mi sono assicurato che Sun JDK 7 a 64 bit fosse la versione java predefinita. Quando ho digitato "java -version" dalla riga di comando (cmd.exe), è stato restituito Sun JDK 7 64-bit ...

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)

Questo non ha risolto il problema per me.

Cosa funziona DID :

Aggiunta dell'opzione -vm a eclipse.ini come suggerito da Jayesh Kavathiya:

Ho aggiunto quanto segue a eclipse.ini:

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

Nota:

Non ho dovuto disinstallare nessuna delle varie versioni di JDK o JRE che ho sul mio computer.


Non è stato necessario disinstallare neanche JDK, ma ho scelto di pulire il mio sistema per eliminare le future cause di errore. Avevo anche menzionato gli argomenti della VM e spiegato perché ovviamente non potevano funzionare per me. A te la scelta come impostare il tuo sistema, a seconda di ciò di cui hai veramente bisogno.
sjas,

Ho dovuto fare entrambe le cose, ma l'aggiunta della riga javaw.exe mi ha portato a installare tutto su 64 bit, comunque. Dipende da quanta punizione di karma devi pagare per Android.
Josh,

Ho sviluppato per anni e senza alcuna modifica al mio sistema (di cui sono a conoscenza), Eclipse genera questo errore. L'aggiunta dell'opzione -vm ha risolto il problema per me, senza dover modificare altre impostazioni o annullare / reinstallare / installare nulla.
Cnosso,

18

Per un jvm.dllfile mancante , possiamo fornire il percorso del file dll nel eclipse.inifile come

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

Qui è importante rimuovere qualsiasi spazio nel percorso e le virgolette doppie. Ha funzionato per me quando ho rimosso le virgolette e lo spazio.

Spero che aiuti qualcuno.


1
Questo mi ha aiutato invece di -vm javaw.exe
amj

11

Ho avuto un problema simile. È stato risolto nel modo seguente.

  • Sposta Eclipse in Programmi (non in Programmi (x86) ).
  • Rimuovere il percorso della versione a 32 bit di Java dalla variabile d'ambiente 'percorso'.

Ho installato entrambe le versioni di Java, ma Eclipse ha continuato a provare a utilizzare quella a 32 bit.


10

Certo, devi avere una versione compatibile di JDK ed Eclipse, ma devi anche aggiungere nel eclipse.inifile le seguenti righe:

-vm
yourdrive\java\bin

Renderli le prime due righe del tuo eclipse.inifile.


7

Come molti hanno già accennato, questo è un problema da 32 a 64 bit sia per Eclipse che per Java . Non è possibile confondere 32 e 64 bit. Poiché Eclipse non utilizza JAVA_HOME, probabilmente dovrai modificare il PERCORSO prima di avviare Eclipse per assicurarti di utilizzare non solo la versione appropriata di Java, ma anche se a 32 o 64 bit (o modificare il file INI come notato da Jayath) .

Se stai installando Eclipse da una condivisione aziendale, assicurati di poter dire quale versione di Eclipse stai decomprimendo e decomprimilo nella directory dei Programmi appropriata per aiutarti a tenere traccia di quale sia, quindi cambia il PERCORSO (in modo permanente tramite ( Windows) Pannello di controllo -> Sistema o set PATH=/path/to/32 or 64bit/java/bin;%PATH%(magari creare un file batch se non si desidera impostarlo nelle variabili di sistema e / o dell'utente) Ricordare che a 32 bit si trova nei file di programma (x86) .

Se non sei sicuro, avvia Eclipse, se ricevi l'errore, modifica il PERCORSO sull'altra versione 'bit' di Java, quindi riprova. Quindi spostare la directory Eclipse nella directory Programmi appropriata .


È chiaramente un problema dato che questa pagina è attualmente vista da 700k ... e un anno dopo apparentemente non c'è alcuna soluzione per esso che non coinvolga frugare nelle variabili di ambiente solo per far funzionare l'IDE!
Ciaran Gallagher,

6

In alternativa, ottieni la stessa versione "bit" di JRE ed Eclipse e quindi crea un nuovo collegamento con la destinazione sottostante (sostituisci la posizione / percorso JRE ed Eclipse installati):

"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

Questo dovrebbe fare il trucco.


6

Puoi risolvere quel problema come molti altri replicati. È necessario che Eclipse e JDK siano a 32 bit o entrambi a 64 bit . L'architettura del sistema operativo non ha importanza mentre gli altri rimangono sullo stesso tipo di architettura.


6

Le risposte sopra di me mi hanno fatto tentare così tanto che ho deciso di eseguire tutte le possibili combinazioni con OS, Eclipse e JVM trio. Comunque, chiunque stia scavando e leggendo il mio post, controlla quanto segue come hot spot (sono un utente di Windows 7).

  1. Comprendi che Program Files e Program File (x86) sono due cartelle diverse ... x86 sta per versione a 32 bit dei programmi e la prima è la versione a 64 bit.

  2. Se hai più versioni di Java installate con diverse versioni di test e rilascio, il che è destinato a succedere con così tanti IDE , gestori, console di amministrazione open source , l'opzione migliore è impostare l'argomento VM direttamente nel eclipse.inifile. In caso contrario, Eclipse diventerà pazzo e proverà a cercare se stesso, il che non va bene.


5

Uno dei modi più semplici per risolverlo è copiare il file jre cartella dall'installazione di JDK nella cartella di installazione di Eclipse. Assicurati che JDK da cui copi abbia la stessa architettura dell'installazione di Eclipse.

Ho dovuto configurare la mia macchina in quel modo, perché eseguo sia Eclipse che Appcelerator Titanium Studio sulla mia macchina. Studio ha bisogno di Java a 32 bit, mentre Eclipse ha bisogno di 64 bit.


Ho fatto la stessa cosa molto tempo fa, ma per eclipse-jee-juno-SR1-win32 e Java6, questa volta non sono riuscito a farlo funzionare. Hai anche modificato eclipse.ini con un percorso assoluto per il jre?
user77115

Ho anche Eclipse 64 larghezza jdk 7 64 bit, ma titanio alto me non è in grado di caricare jni dll condivisa.
realtebo,

A causa dei folli aggiornamenti automatici di Window, ogni volta che c'è un aggiornamento per JAVA, il mio Eclipe viene bloccato. La soluzione sopra è il modo più semplice per lavorare in modo indipendente senza preoccuparsi degli aggiornamenti automatici. Grazie!
Jyo the Whiff,

4

Sì, assicurati solo che le tue versioni di Eclipse e JDK siano entrambe a 64 bit. Solo per assicurarsi che tutto sia corretto disinstallato JDK e installarlo in Programmi e non in Programmi (x86) . Almeno questo ha risolto il mio problema.


4

Basta controllare la variabile d'ambiente PATH. In Risorse del computer -> Proprietà -> Impostazioni di sistema avanzate -> Variabili d'ambiente -> (finestra in alto a sinistra "Variabili utente per" qualche nome di PC "") basta controllare la variabile PATH. Se non esiste, crearlo con il seguente -> C: \ Programmi (x86) \ Java \ jre7 \ bin <-

Ho avuto lo stesso problema dopo aver aggiornato Eclipse. Ho scoperto che il percorso richiedeva la versione a 64 bit, ma avevo il 32 bit nel percorso dif. Mi è stato utile. PS: ho un sistema operativo a 64 bit, JRE a 32 bit ed Eclipse a 32 bit. Tutto funziona bene :)


4

Dovresti disinstallare tutti i vecchi [JREs] [1] e quindi installare il più recente ... Ho avuto lo stesso problema e ora lo risolvo. Io ho:

Meglio installare Jre 6 a 32 bit. Funziona veramente.


3

Scaricato JVM a 64 bit dal sito, installato manualmente e aggiornato la variabile del percorso di sistema. Ciò ha risolto il problema.

  1. JVM predefinito è installato nel mio sistema era in "C: \ Programmi
    (x86) \ Java \ jre7"
  2. JVM installato manualmente è stato installato in "C: \ Programmi \ Java \ jre7" e dopo aver aggiornato questa variabile con la variabile del percorso di sistema ha funzionato.

3

Grazie misterfrb , mi sono reso conto che Eclipse stava dando questo errore, perché avevo appena installato la suite di sviluppatori Oracle 10g e stava cercando il jvm.dllfile nella C:\DevSuiteHome_1cartella (devo aver scelto di installare nuovamente JDK insieme alla suite di sviluppatori).

Dopo aver rimosso le linee DevSuiteHome dalla variabile path e aver aggiunto la posizione di correzione per 64-bit jvm.dll(non sono sicuro che ciò fosse necessario, non ci ho provato), Eclipse ha funzionato di nuovo e anche Suite di sviluppatori.


3

Semplice, ho un sistema operativo a 64 bit, 32-bit Eclipse e sia JDK 32 e 64 installati ... Ho appena disinstallato il JDK 64-bit ed Eclipse funziona perfettamente.


3

Ho avuto lo stesso problema dopo l'aggiornamento da Java 6 a Java 7. Dopo aver rimosso Java 6 (64 bit) e reinstallato Java 7 (64 bit), Eclipse ha funzionato. :)


3

È fondamentale aggiungere il parametro -vm e il suo valore su 2 righe ALL'INIZIO di eclipse.ini

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


3

Voglio prevenire un'altra soluzione per questo errore, in particolare per chi desidera utilizzare Eclipse a 32 e 64 bit in un sistema.

Eclipse si avvierà usando JRE / JDK nella jresottodirectory, se esiste. (Anche STS o altri IDE basati su eclissi supportano questa funzione ...)

La soluzione è creare una giunzione di directory usando il mklink.execomando esistente in Windows Vista o nella versione più recente ( junction.exe offre una funzione simile per Windows 2000 / XP)
Aprire la finestra della riga di comando ed eseguire il comando seguente:

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

Naturalmente, se Eclipse è per Windows a 64 bit, l'architettura di JDK/JREdeve essere la stessa.

Assumere:

  • Eclipse for windows x86_64è installato in d: \ devTool \ eclipse
  • JDK for windows x64è installato in C: \ Programmi \ Java \ jdk1.8.0

Il comando per creare la jrecartella sarà:

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

A proposito, elimina la giunzione di directory NON cancellerà alcun file. Se si crea un collegamento errato, è possibile eliminarlo utilizzando Esplora file o il rmdircomando.

rmdir "d: \ devTool \ eclipse \ jre"



2

Se usi l'intero trio a 64 bit e continua a non funzionare (sono arrivato a questo problema durante l'avvio di Android Monitor in Intellij Idea), probabilmente viene utilizzato jvm.dll errato rispetto a ciò che si aspetta Java. Segui questi passaggi:

  1. Trova jvm.dll nella tua directory JRE: C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. Trova jvm.dll nella tua directory JDK: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. Copiare la jvm.dlldirectory da JRE nella directory JDK e sovrascrivere jvm.dll in JDK.

Non dimenticare di fare un backup, per ogni evenienza. Non è necessario installare o disinstallare nulla relativo a Java.


2

Lo stesso mi è venuto in mente. Avevo Eclipse a 64 bit, ma il mio JDK era a 32 bit. Quindi ho installato la versione a 64 bit ed è OK adesso.


2

Non sono sicuro del perché, ma ho installato jre nella mia directory c: \ windows e java.exe e javaw.exe nella mia directory windows \ system32.

Ovviamente queste directory stavano diventando prioritarie anche DOPO l'aggiunta del flag -vm al mio file eclipse.ini.

Eliminali da qui risolto il problema per me.


2

Hai modificato la versione corretta di JAVA_HOME e PATH nelle variabili ambientali.


1

Nella pagina di download di Eclipse, dovrebbe essere scritto "JRE 32 bit" o "JRE 64 bit" e non "Windows 32 bit" o "Windows 64 bit".

Assicurati di utilizzare la versione corretta compatibile con il tuo JDE, come precedentemente risposto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.