Lors de l'exécution d'une application java, ou simplement de «java», le jvm échoue:
Une erreur s'est produite lors de l'initialisation de la VM
java / lang / NoClassDefFoundError: java / lang / Object
Voici une liste de mauvaises réponses:
Le répertoire de base Java correct, y compris le répertoire / bin, se trouve sur le PATH global
JAVA_HOME est défini correctement
L'exécution de la commande java -fullversion fonctionne
$ java -fullversion ./java full version "1.7.0_05-b05"
Les liens symboliques dans / usr / java pointent tous vers l'installation Java correcte
Je n'ai pas installé de java `` par défaut '' lorsque j'ai créé le système
java -version
échoue ... même erreur que ci-dessusL'exécution des commandes sous la structure de répertoires de l'installation java ne fonctionne pas non plus
C'est java 64 bits pour un 64 bits
Des idées?
rt.jar
fichier, qui est requis parJVM
au moment du chargementJRE
Réponses:
Ce problème provient d'une mauvaise installation de Java.
Possibilité 1
La bibliothèque standard Java est contenue dans divers fichiers JAR, tels que
rt.jar
,deploy.jar
,jsse.jar
, etc. Lorsque le JRE est emballé, ces fichiers JAR critiques sont compressés avec pack200 et stockés commert.pack
,deploy.pack
,jsse.pack
, etc. Le programme d' installation de Java est censé Décompressez. Si vous rencontrez cette erreur, cela ne s'est apparemment pas produit.Vous devez exécuter manuellement
unpack200
sur tous les.pack
fichiers dans les JRElib/
et leslib/ext/
dossiers.les fenêtres
Pour décompresser un
.pack
fichier (par exemplert.pack
), exécutez:Pour décompresser tous les
.pack
fichiers de manière récursive , à partir de la racine JRE:*rien
Pour décompresser un
.pack
fichier (par exemplert.pack
), exécutez:Pour décompresser tous les
.pack
fichiers de manière récursive , à partir de la racine JRE:Possibilité 2
Vous avez mal installé Java d'une autre manière. Peut-être avez-vous installé sans droits d'administrateur ou essayé d'extraire simplement des fichiers du programme d'installation. Réessayez avec le programme d'installation et / ou plusieurs privilèges. Ou, si vous ne souhaitez pas utiliser le programme d'installation, utilisez
.tar.gz
plutôt le package Java.la source
for %i in (*.pack) do (..\bin\unpack200 "%i" "%~ni.jar" & del "%i")
(Peut-être qu'un jour je le rendrai un peu plus robuste pour ne pas avoir à changer manuellement le chemin, mais là encore, j'utilise généralement juste la.gz
version du JRE qui ne les contient pas. )Pour Java 8 sur un système d'exploitation * nix, accédez à
<jdk root>/jre/lib
(pour moi,/usr/java/jdk1.8.0_05/jre/lib
). Depuis ce répertoire, exécutez:Pour éviter les problèmes de version au cas où vous auriez installé un autre JRE, utilisez le même
unpack200
que celui fourni avec le JRE que vous corrigez - c'est-à-dire, à partir de la ligne de commande, utilisez../../bin/unpack200
(pour moi, cela s'étend à/usr/java/jdk1.8.0_05/bin/unpack200
), pas seulementunpack200
.la source
"<jdk1.8_root>/lib"
../bin/unpack200 tools.pack tools.jar
in"<jdk1.8_root>/jre/lib/ext"
../../bin/unpack200 jfxrt.pack jfxrt.jar
../../bin/unpack200 localedata.pack localedata.jar
Il semble que pour une architecture 64 bits, vous devez installer à la fois la version 32 bits et la version 64 bits de jre (les fichiers indépendants de l'architecture comme rt.jar ne sont distribués que dans la version 32 bits).
N'oubliez pas alors de faire attention à inclure l'exécutable Java correct dans la variable d'environnement globale PATH.
la source
architecture independent files as rt.jar are distributed only in the 32-bin version
?Solution rapide pour les personnes impatientes;) Sur les machines Windows , essayez ceci: Allez dans le
C:\Windows\System32
répertoire et supprimez-lejava.exe
(ou renommez-le en quelque chose commejava.exe.old
).Depuis au moins 1.6, il ne devrait pas y avoir de
java.exe
dans le répertoire Windows. S'il y en a, c'est un reste de quelque chose.Un peu plus de lecture:
Je suis vraiment surpris qu'une question de 2012 n'ait pas encore de réponse approuvée et j'ai rencontré le même problème en 2015 sur mon système d'exploitation Win 7 32 bits!
Alors qu'est-il arrivé?
En gros, tout fonctionnait bien, j'ai téléchargé la base de données H2 et quand j'ai essayé de démarrer,
H2 Console (Command Line)
j'ai obtenu:J'ai trouvé cette question et j'ai pu confirmer les mêmes symptômes:
JAVA_HOME est correctement défini:
java -version
échoue, alors quejava --fullversion
fonctionne bien:SOLUTION: Allez dans le
C:\Windows\System32
répertoire et supprimez lejava.exe
fichier (j'ai en fait renommé) !!!!Maintenant, je reçois:
et
H2 Console (Command Line)
fonctionne très bien aussi!Les crédits vont au dernier message de ce forum: https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/
la source
C:\ProgramData\Oracle\Java\javapath
étaient à l'origine du problème. Je change la variable d'environnement PATH et maintenant cela fonctionne.J'ai téléchargé le nouveau JDK aujourd'hui (1.8.0.73)
c:> java.exe
et j'ai obtenu le tristement célèbre:Je voulais juste partager ma solution de travail ici.
Quand je suis entré dans le
jdk\bin
dossier, Java fonctionnait bien, donc je savais que c'était le fichierPATH
. Je me suis misPATH
à juste\jdk\bin
chez CMD pour le prouver et cela a fonctionné.Donc, l'un des dossiers dans le
PATH
must have avaitjava.exe
qui causait le conflit, ai-je pensé. En fait, c'est ceC:\>ProgramData\Oracle\Java\javapath
qui contient des liens symboliques vers les exécutables.java.exe
pointaitjre\bin
. Le fichier était corrompu, quand j'ai commencé\jre\bin\java.exe
- exactement la même erreur. Bingo. J'ai réinstallé JRE et le problème a disparu. Bon codage ...la source
Il vous manque probablement un fichier appelé rt.jar dans votre installation qui contient le fichier de classe pour java.lang.Object. Vérifiez vos fichiers d'installation, etc.
En particulier, notez qu'un intsaller 64 bits superpose (ou installe "à côté de") une installation 32 bits existante. En d'autres termes, pour obtenir une installation 64 bits entièrement fonctionnelle, vous devez d'abord exécuter l'installation 32 bits, puis suivre avec une installation 64 bits si vous avez une machine compatible 64 bits ...
Si à la place vous ne faites qu'une installation 64 bits, il vous manquera certains fichiers dans l'installation et vous obtiendrez des erreurs telles que celle ci-dessus.
la source
Sous Windows 10, j'étais confronté au même problème avec JRE 1.8 (8u121).
Dactylographie
l'invite cmd retourne
Toutes les autres commandes,
echo %JAVA_HOME%
,echo %JRE_HOME%
,echo %PATH%
,java -fullversion
a bien fonctionné.Accédez aux variables d'environnement sur le panneau d'administration système, supprimez de PATH le lien
C:\ProgramData\Oracle\Java\javapath
et assurez-vous d'avoir défini dans PATH le lien versC:\Program Files\Java Folder\bin
.Après cela, vérifiez s'il
C:\Windows\System32
existe unjava.exe
fichier; si vrai, supprimez ce fichier.Taper maintenant
java -version
cela fonctionne très bien.la source
C:\Program Files\Java Folder\bin
. Au lieu de cela je l'utiliseC:\Program Files\Java\jdk1.8.0_161\bin
mais ça ne m'aide pas de toute façon. Il n'y a pas de fichier java.exe dans le dossier System32Ce problème se produit lorsque vous installez le JDK par
_uncompressing_
lui à la place_executing_
.Par exemple:
Dans le premier scénario, les bibliothèques d'exécution, comme rt.jar, ne sont pas automatiquement décompressées (ainsi, vous pouvez trouver les fichiers rt.pack, etc. au lieu des fichiers .jar).
la source
J'ai eu le même problème récemment. Dans mon cas, ma machine Windows 7 a automatiquement téléchargé java et ajouté
C:\ProgramData\Oracle\Java\javapath
au début de ma variable d'environnement de chemin, ce qui a gâché mon java. Une fois que je me suis débarrassé de cela du chemin, cela a fonctionné.la source
si vous faites "chmod u + rx" sur le binaire java et que vous l'exécutez, il décompressera les fichiers jar et vous pourrez faire une version java sans erreurs d'exécution
la source
Vous ne pouvez pas installer uniquement le 64 bits, vous devez d'abord installer le 32 bits, puis ajouter les composants 64 bits.
De java.com:
la source
Si vous installez une version 64 bits sans installer au préalable 32 bits, cette erreur se produira malgré la résolution de tous les autres problèmes. J'ai une toute nouvelle machine Dell i7 64 bits Windows 10 Pro exécutant Java 8u71. Après avoir ajouté mon% path% et% classpath% aux variables d'environnement et essayé plusieurs autres correctifs, désinstaller 64 bits, installer 32 bits puis réinstaller 64 bits l'a corrigé.
Certains des problèmes, comme le fait de ne pas décompresser vos fichiers, etc., qui ont été mentionnés comme causes possibles peuvent toujours causer des problèmes, mais si vous ne le faites pas, les autres correctifs ne fonctionneront pas.
la source
Dans mon cas, j'utilise un Windows 8.1 (installé jdk1.8.0_77), j'ai fait trois choses:
et le tour est joué!
la source
J'ai fait face au problème similaire et j'ai trouvé que le lien symbolique dans les données du programme (C: \ ProgramData \ Oracle \ Java \ javapath) était incorrect. J'ai donné le bon chemin et cela a fonctionné.
Des détails sur la manière de corriger les données du programme sont disponibles ici
la source
Une autre réponse pourrait être d'utiliser le fichier tar.gz à la place dans le cas de Linux. Il semble y avoir quelque chose comme ça également pour la plate-forme solaris. De cette façon, tous les fichiers seront déjà au format attendu et il n'y aura pas de problèmes de décompression.
la source
J'ai un problème sur les installations Linux x86_64 avec JDK 1.7.0_40 i586. J'ai compris que le problème est que rpm ne peut pas décompresser les fichiers jar, comme mentionné par Rigg802 (bien que rpm termine le marquage du succès):
Le fichier /lib/ld-linux.so.2 est fourni par glibc-2.12-1.107.el6_4.4. i686 qui ne fait pas partie des deps rpm de jdk rpm.
Oracle JDK rpm nécessite également des versions 32 bits de libgcc-4.4.7-3.el6. i686 à installer
Ainsi, la solution de contournement consiste à installer d'abord glibc-2.12-1.107.el6_4.4.i686 et libgcc-4.4.7-3.el6.i686.
la source
Solution rapide qui a fonctionné pour moi:
la source
J'ai constaté que cette erreur s'est produite lorsque j'ai extrait le fichier .rpm.
J'ai ensuite supprimé ce dossier et téléchargé jdk-7u79-linux-x64.tar.gz pour Linux 64 et extrait le contenu de ce fichier à la place. Aussi: export JAVA_HOME = / opt / java / jdk1.7.0_79 export JDK_HOME = / opt / java / jdk1.7.0_79 export PATH = $ {JAVA_HOME} / bin
la source
Installez à nouveau le jre . Cela a simplement résolu mon problème. (Le lot de démarrage SonarQube a commencé à donner cette erreur après avoir installé jdk)
la source
Accédez au panneau de configuration, désinstallez les éléments liés à java (fermez eclipse si ouvert), puis réinstallez java et ouvrez eclipse, nettoyez les projets.
la source
Je viens de faire cela sur Solaris et j'ai rencontré ce problème identique où même "java -version" ne fonctionne pas. Il y a une raison pour laquelle les versions 64 bits de la distribution sont BIEN plus petites que les 32 bits. C'est en effet comme indiqué ci-dessus:
En d'autres termes, pour obtenir une installation 64 bits entièrement fonctionnelle, vous devez d'abord exécuter l'installation 32 bits, puis suivre avec une installation 64 bits si vous avez une machine compatible 64 bits ...
J'ai donc exécuté le programme d'installation pour le 32 bits:
Ensuite, j'ai exécuté le programme d'installation pour le 64 bits:
Cela me donne plusieurs exécutables java parmi lesquels choisir:
Les java sparcv9 sont les versions 64 bits et ils fonctionnent avec "-version" lorsqu'ils sont installés avec le JDK 32 bits.
-Dan
la source
/usr/java
un système d'exploitation similaire à Linux / Unix. Vous avez raison de dire que l'installation Solaris de Java était différente de tout autre système d'exploitation jusqu'à Java8. Vous deviez essentiellement installer d'abord le package 32 bits, puis le package 64 bits par-dessus . Mais c'est tout dans le passé maintenant que Java 32 bits n'est plus pris en charge sur Solaris, comme pour Mac OS X.Dans la fenêtre 10, il existe déjà un chemin dans env car il
C:\>ProgramData\Oracle\Java\javapath
contient des liens symboliques vers les exécutables.Lorsque j'installe une nouvelle version et la supprime de ma variable d'environnement, tout mon projet commence à l'afficher.
J'utilise l'oxygène d'éclipse dans la fenêtre 10
Pour le résoudre: -
Je viens de supprimer le chemin
C:\>ProgramData\Oracle\Java\javapath
de la variable d'environnement et j'ai ajouté un nouvel env comme JAVA_HOME et% JAVA_HOME% / bin dans le cheminJe réinstalle le jdk avec les privilèges d'administrateur (supprime le dossier JRE précédent)
Mon problème est résolu :) J'espère que cela vous aidera :)
la source
Cela a résolu le problème que j'avais sur CentOS
voir également la configuration de JAVA_HOME & CLASSPATH dans CentOS 6
la source
Donc, j'ai continué à tout essayer et enfin, il semble que la réinstallation de Java après la désinstallation a résolu mon problème.
la source
en cas de problème pour la version d'installation JAVA
C: \ Où JAVA
donnera l'emplacement de java qu'il ramasse. Si vous avez un chemin autre que votre installation, supprimez ces fichiers ou renommez-le (peut-être en tant que _backup). vous obtiendrez la version appropriée du fichier java.
la source
J'ai rencontré le même problème, j'ai installé deux versions de Java, ce qui a causé ce problème. pour confirmer cela, cliquez sur l'icône java dans le panneau de configuration si ne s'ouvre pas, le problème est le même, il suffit de désinstaller une version. part de gâteau. Merci.
la source
J'étais confronté au même problème: une erreur s'est produite lors de l'initialisation de la VM java / lang / NoClassDefFoundError: java / lang / Object
Suivez les étapes ci-dessous pour résoudre le problème:
Étape 1. Accédez à C: \ Program Files \ et recherchez le dossier Java.
Étape 2. Supprimez le dossier C: \ Program Files \ Java.
Étape 3. Téléchargez le nouveau Jdk pour votre version 32 bits / 64 bits à partir de http://www.oracle.com/technetwork/java/javase/downloads/index.html
Étape 4. Installez JDK
Étape 5: Réglez maintenant JAVA_HOME sur "C: \ Program Files \ Java \ jdk1.8.0_91"
Étape 6: Ouvrez l'invite de commande et entrez java -version.
Ça marche.
la source