java - tutorial - jni vs jna




Impossible de charger la bibliothèque partagée JNI(JDK) (20)

Jumelages fonctionnels d'OS, JDK et Eclipse:

  • Système d'exploitation 32 bits - JDK 32 bits - Eclipse 32 bits (32 bits uniquement)
  • OS 64 bits - JDK 32 bits - Eclipse 32 bits
  • Système d'exploitation 64 bits - JDK 64 bits - 64 bits Eclipse (64 bits uniquement)

J'avais plusieurs JDK et JRE installés.

Chacun d'eux avait sa propre entrée dans la variable PATH, tout fonctionnait plus ou moins.

A en juger par les variables PATH, certaines installations étaient complètement inutiles, puisqu'elles n'ont jamais été utilisées. Bien sûr, les Javas "inactifs" pourraient être référencés manuellement depuis Eclipse si j'en avais besoin, mais je n'ai jamais fait ça, donc je n'en avais pas vraiment besoin. (Au moins je le pensais à ce moment-là ...)

J'ai nettoyé le désordre, désinstallé tous les Java actuels, installé seulement JDK + JRE 1.7 64 bits.

Une des 'installations' d'Eclipse a ensuite échoué avec la Failed to Load the JNI shared Library et un chemin donné par rapport au JDK nouvellement installé où elle pensait que le jvm.dll devait être.

L'Éclipse qui échouait était le seul de tous mes IDEs qui était encore une version 32 bits sur mon installation autrement tout-64 bits.

L'ajout d'arguments VM, comme si souvent mentionné, dans le eclipse.ini n'était pas utile dans mon cas (parce que je n'avais que le mauvais JDK / JRE à associer.)

J'ai également été incapable de savoir comment vérifier si cette Eclipse était une version 32 bits ou 64 bits (je ne pouvais pas la rechercher dans le Gestionnaire des tâches , car cette 'installation' d'Eclipse ne démarrerait pas. depuis un moment que je l'avais mis en place, je ne pouvais pas me souvenir de sa version non plus.)

Si vous utilisez un JDK plus récent et un JRE plus ancien, vous risquez également de rencontrer des problèmes, mais il est plus probable que java.lang.UnsupportedClassVersionError apparaisse, IIRC .

Lorsque j'essaie d'ouvrir Eclipse , une boîte de dialogue pop-up indique:

Impossible de charger la bibliothèque partagée JNI "C: /JDK/bin/client/jvm.dll" `.

Suite à cela, la force Eclipse se ferme.

Voici quelques points que j'aimerais faire:

  • J'ai vérifié pour voir si quelque chose existe à ce chemin. Cela existe.
  • Mon kit de développement Eclipse et Java SE sont tous les deux 64 bits. J'ai vérifié mon système, et il peut gérer 64 bits.
  • J'ai cherché ce problème sur Google et sur Stack Overflow, et la seule réponse que j'ai trouvée était de télécharger les versions 32 bits de JDK et Eclipse.

Le téléchargement des versions 32 bits est quelque chose que je ne veux que faire en dernier recours.
Qu'est-ce qui serait suggéré pour résoudre ce problème?


Assurez-vous que votre fichier eclipse.ini inclut les lignes suivantes.

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

Mon eclipse.ini par exemple:

-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

Utilisez OS et Eclipse à la fois 64 bits ou les deux 32 bits garder même et config eclipse.ini .

Votre fichier eclipse.ini peut être trouvé dans votre dossier eclipse.


Bien sûr, vous devez avoir une version compatible de JDK et Eclipse, mais vous devez également ajouter dans le fichier eclipse.ini les lignes suivantes:

-vm
yourdrive\java\bin

Faites-les les deux premières lignes de votre fichier eclipse.ini .


Cette erreur signifie que l'architecture d'Eclipse ne correspond pas à l'architecture du runtime Java, c'est-à-dire que si l'un est en 32 bits, l'autre doit être le même, et non 64 bits.

La solution la plus fiable consiste à spécifier l'emplacement de la machine virtuelle Java dans eclipse.ini:

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

Important: Ces deux lignes doivent précéder -vmargs. N'utilisez pas de guillemets. les espaces sont autorisés.


Et pour les utilisateurs PDT - évitez la page de téléchargement Zend - il n'y a pas de téléchargements 64-bit liés.

Utilisez le site Elipse lui-même .

Le lien ci-dessus avait un Eclipse 3.6 plus ancien qui n'a pas réussi à se mettre à jour en raison du bogue Eclipse # 317785 .

Ma solution consistait simplement à installer Java 32 bits parallèlement à 64 bits, ce qui a permis au programme d'installation de Zend de fonctionner.

C'est déprimant la quantité de Java / Eclipse que l'on doit traverser pour obtenir un IDE PHP.


Il est crucial d'ajouter le paramètre -vm et sa valeur sur 2 lignes AU DEBUT de l'eclipse.ini

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


J'ai eu le même problème après la mise à niveau de Java 6 vers Java 7. Après avoir supprimé Java 6 (64 bits) et réinstallé Java 7 (64 bits), Eclipse a fonctionné. :)


J'ai plusieurs versions de Java installées, à la fois Sun JDK et JRockit, à la fois 32 bits et 64 bits, etc. et j'ai rencontré ce problème avec une nouvelle installation d'Eclipse pour Java EE (JUNO) 64 bits.

Ce qui n'a pas fonctionné:

Trio 64 bits comme suggéré par Peter Rader:

J'utilise Eclipse 64 bits sur un système d'exploitation 64 bits (Windows 7).

Je me suis assuré Sun JDK 7 64 bits était la version Java par défaut. Lorsque j'ai tapé "java -version" à partir de la ligne de commande (cmd.exe), Sun JDK 7 64 bits a été renvoyé ...

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)

Cela n'a pas résolu le problème pour moi.

Quel travail DID :

Ajout de l'option -vm à eclipse.ini comme suggéré par Jayesh Kavathiya:

J'ai ajouté ce qui suit à eclipse.ini:

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

Remarque:

Je n'avais pas besoin de désinstaller les différentes versions de JDK ou JRE que j'avais sur ma machine.


Je ne sais pas pourquoi mais j'ai installé le jre dans mon répertoire c: \ windows et java.exe et javaw.exe dans mon répertoire windows \ system32.

Évidemment, ces répertoires étaient prioritaires même APRÈS avoir ajouté l'indicateur -vm dans mon fichier eclipse.ini.

Supprimez-les d'ici a résolu le problème pour moi.


La même chose s'est produite pour moi. J'ai eu Eclipse 64 bits, mais mon JDK était de 32 bits. J'ai donc installé la version 64 bits et c'est OK maintenant.


Merci misterfrb , j'ai réalisé qu'Eclipse donnait cette erreur, parce que je venais juste d'installer la suite Oracle 10g Developer , et qu'elle cherchait le fichier jvm.dll dans le dossier C:\DevSuiteHome_1 (j'ai dû C:\DevSuiteHome_1 d'installer à nouveau JDK le long avec la suite développeur).

Après avoir supprimé les lignes DevSuiteHome de la variable paths et ajouté l'emplacement de correction pour jvm.dll 64 bits ( jvm.dll ne sais pas si cela était nécessaire, jvm.dll n'ai pas essayé), Eclipse a fonctionné à nouveau, et Developer Suite le fait également.


Oui, assurez-vous simplement que vos versions d'Eclipse et de JDK sont toutes deux 64 bits. Juste pour vous assurer que tout est correct, désinstallez JDK et installez-le dans Program Files et non dans Program Files (x86) . Au moins, cela a résolu mon problème.


Si vous utilisez un trio complet 64 bits et que cela ne fonctionne toujours pas (je suis arrivé à ce problème en lançant Android Monitor dans Intellij Idea), jvm.dll probablement incorrect est utilisé contrairement à ce que votre java attend. Suivez simplement ces étapes:

  1. Trouver le jvm.dll dans votre répertoire JRE: C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. Recherchez le fichier jvm.dll dans votre répertoire JDK: c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. Copiez le jvm.dll du jvm.dll JRE dans votre répertoire JDK et écrasez le fichier jvm.dll dans JDK.

Ne pas oublier de faire une sauvegarde, juste au cas où. Pas besoin d'installer ou de désinstaller quoi que ce soit en rapport avec Java.


Simple, j'ai un système d'exploitation 64 bits, Eclipse 32 bits et les deux JDK 32 & 64 installé ... Je viens de désinstaller le JDK 64 bits et Eclipse fonctionne bien ..


Un des moyens faciles de le résoudre est de copier le dossier jre depuis le JDK installé dans le dossier d'installation d'Eclipse. Assurez-vous que JDK vous copiez à partir de la même architecture que votre installation Eclipse.

J'ai dû configurer ma machine de cette façon, car je lance à la fois Eclipse et Appcelerator Titanium Studio sur ma machine. Le studio a besoin de Java 32 bits, tandis que Eclipse a besoin de 64 bits.


Une autre option est:

Créez un raccourci vers le fichier Eclipse.exe. Ouvrez le raccourci et changez la cible en:

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

Pour votre installation, assurez-vous que les emplacements pointent vers le bon répertoire d'installation Eclipse et le bon javaw.exe installation de javaw.exe .

(Les versions 64/32 bits d'Eclipse et Java doivent être identiques, bien sûr.)


Vous avez besoin d'un trio 64 bits:

  • Système d'exploitation 64 bits
  • Java 64 bits
  • Eclipse 64 bits

Vous avez modifier la version correcte du JAVA_HOME et PATH dans les variables d'environnement.


Vous pouvez également obtenir la même version "bit" de JRE et Eclipse, puis créer un nouveau raccourci avec la cible ci-dessous (remplacez l'emplacement / chemin d'installation JRE et 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

Cela devrait faire l'affaire.






jni