JRE 1.7-version java-renvoie: java / lang/NoClassDefFoundError: java / lang / Object


Lors de l'exécution d'une application java, ou simplement 'java', la jvm échoue:

Une erreur s'est produite lors de l'initialisation de la machine virtuelle
java / lang/NoClassDefFoundError: java/lang / Object

Voici une liste de tort réponse:

  1. Le répertoire personnel Java correct, y compris le répertoire / bin, se trouve sur le CHEMIN global

  2. JAVA_HOME est correctement défini

  3. Exécution de la commande java-fullversion travaux

    $ java -fullversion
    
    ./java full version "1.7.0_05-b05"
    
  4. Les liens symboliques dans/usr / java pointent tous vers l'installation correcte de java

  5. Je n'ai installé aucun java "par défaut" lorsque j'ai créé le système

  6. java -version échoue...même erreur que ci-dessus

  7. L'émission des commandes à partir de la structure de répertoire de l'installation java ne fonctionne pas non plus

  8. Il s'agit de java 64 bits pour un

Des idées?

 119
Author: Ravi Parekh, 2012-08-04

27 answers

Le problème vient d'une mauvaise installation de java (par exemple, une installation effectuée sans droits d'administrateur ou en décompressant simplement les outils.zip).

Vous pouvez désinstaller, puis réinstaller Java avec un programme d'installation et / ou plus de privilèges ou essayer ce qui suit:

Vérifiez dans votre dossier JDK pour les fichiers *.pack dans jre/lib et jre/lib/ext comme rt.pack (l'emplacement par défaut est c:\nameof_jdk_folder\jre\lib pour Microsoft Windows et /usr/java/lib pour Unix/GNU Linux)

Ces fichiers *.pack doivent être décompressés dans .jar fichiers utilisant cette commande:

  • Pour Windows:

    %JAVA_HOME%\bin\unpack200 -r -v -l "" rt.pack rt.jar

  • Pour *nix, une ligne de commande similaire décompressera les fichiers:

    cd /usr/java/lib

    /usr/bin/unpack200 rt.pack rt.jar

Et répétez cette étape avec tous les *.pack fichiers et relancer votre programme.

 171
Author: Rigg802, 2014-01-23 15:25:53

Pour java 8 @ * NIX OS:

Du répertoire "<jdk1.8_root>/jre/lib" (Pour moi, il: /usr/java/jdk1.8.0_05/jre/lib)

Exécuter:

 ../../bin/unpack200 rt.pack rt.jar
 ../../bin/unpack200 jsse.pack jsse.rar
 ../../bin/unpack200 charsets.pack charsets.jar

(Peut-être que Vous ne pouvez pas utiliser unpack200 du système causer des problèmes de version.) Ce unpack200 est dans le répertoire java 8 (pour moi: /usr/java/jdk1.8.0_05/bin)

Benedek

 20
Author: betontalpfa, 2014-06-16 11:18:37

, Il semble que, pour une architecture 64 bits, vous devez installer la version 32 bits et la version 64 bits de jre (indépendant de l'architecture des fichiers comme rt.jar sont distribués uniquement dans la version 32 bits).

Rappelez-vous alors de faire attention à inclure l'exécutable java correct dans la variable d'environnement global PATH.

 12
Author: Tommaso, 2012-10-10 09:40:28

Solution Rapide pour les personnes impatientes ;) Sur Windows machines, essayez ceci: Allez dans le répertoire C:\Windows\System32 et supprimez java.exe (ou renommez-le en quelque chose comme java.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 en fait rencontré le même problème en 2015 sur mon système d'exploitation Win 7 32 bits!

, Donc ce qui est arrivé?

, Fondamentalement, tout fonctionnait bien, j'ai téléchargé de la base de données H2 et quand j'ai essayé de démarrer H2 Console (Command Line) j'ai eu:

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

J'ai trouvé cette question et j'ai pu confirmer les mêmes symptômes:

JAVA_HOME est correctement défini:

echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_26

java -version échoue, alors que java --fullversion fonctionne bien:

java -fullversion
java full version "1.6.0_45-b06"

SOLUTION: Allez dans le répertoire C:\Windows\System32 et supprimez (j'ai en fait renommé) java.exe le fichier!!!!

Maintenant, je obtenir:

java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)

Et H2 Console (Command Line) fonctionne bien aussi!

Crédits aller au dernier message de ce forum: https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/

 11
Author: iaforek, 2017-03-15 22:18:12

Il vous manque probablement un fichier appelé rt.jar dans votre installation qui a le fichier de classe pour java.lang.Objet. Vérifiez vos fichiers d'installation, etc.

En particulier, notez qu'un intsaller 64 bits superpose (ou installe "à côté") 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 effectuer une installation 64 bits si vous avez une machine compatible 64 bits...

Si à la place vous faites juste une installation 64 bits vous manquerez certains fichiers dans l'installation et obtiendrez des erreurs telles que celle ci-dessus.

 8
Author: user3213415, 2014-01-20 00:44:54

J'ai téléchargé le nouveau JDK aujourd'hui (1.8.0.73) a commencé c:> java.exe et a obtenu l'infâme:

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

Je voulais juste partager ma solution de travail ici.

Quand je cd'ied dans le dossier jdk\bin, Java fonctionnerait bien donc je savais que c'était le PATH. J'ai mis PATH à juste \jdk\bin à CMD pour le prouver et cela a fonctionné.

Donc, l'un des dossiers du PATH devait avoir java.exe qui causait le conflit, je pensais. Comme il s'est avéré, c'était C:\>ProgramData\Oracle\Java\javapath qui tient liens symboliques vers les exécutables.

java.exe a été pointant vers jre\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 est parti. Heureux de codage...

 8
Author: Striker, 2016-03-04 01:58:22

Ce problème se produit lorsque vous installez le JDK par _uncompressing_ au lieu de _executing_ il.

Par exemple:

unzip jdk-6u45-linux-x64.bin  (wrong)

sh ./jdk-6u45-linux-x64.bin   (right)

Dans le premier scénario, les bibliothèques d'exécution, comme rt.jar, ne soyez pas automatiquement décompressé (ainsi, vous pouvez trouver les fichiers rt. pack,etc. au lieu de l' .jar ceux).

 5
Author: kdn, 2015-10-06 11:33:08

Sur Windows 10, je faisais face au même problème avec JRE 1.8 (8u121).
Typage

java -version

L'invite cmd renvoie

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

Toutes les autres commandes, echo %JAVA_HOME%, echo %JRE_HOME%, echo %PATH%, java -fullversion a bien fonctionné.

En allant dans 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 vers C:\Program Files\Java Folder\bin.

Après cela, vérifiez si dans C:\Windows\System32 existe un fichier java.exe; si true, supprimez ce fichier.

Taper maintenant java -version cela fonctionne bien.

 5
Author: Francesco Marchitelli, 2018-03-09 19:54:25

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 path, ce qui a foiré mon java. Une fois que je me suis débarrassé de cela du chemin, cela a fonctionné.

 4
Author: developer747, 2016-01-25 22:03:43

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

 3
Author: Peter Nielsen, 2014-08-20 14:19:05

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:

L'installation du JRE sur un système 64 bits qui permet une JVM 32 bits est un processus en deux étapes: installez d'abord le JRE 32 bits, puis installez le support supplémentaire pour les opérations 64 bits. Les noms des fichiers sont les suivants:

 3
Author: Andrew Speer, 2014-08-21 21:06:49

Si vous installez une version 64 bits sans installer d'abord 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é mes% 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 ne pas avoir vos fichiers décompressés, etc. qui ont été mentionnés comme possible les causes peuvent toujours causer des problèmes, mais si vous ne le faites pas, les autres correctifs ne fonctionneront pas.

 1
Author: Bryan Robinson, 2016-01-27 05:33:16

Dans mon cas, j'utilise un windows 8.1 (installé jdk1.8.0_77), j'ai fait trois choses:

  1. J'ai supprimé les jdk précédents
  2. j'ai renommé le java.fichier exe à l'intérieur C:\Windows\System32
  3. J'ai également supprimé C:\ProgramData\Oracle\Java\javapath dans mon CHEMIN (echo %PATH%)

Et voila obtenu fixe!

 1
Author: kashogi, 2016-04-04 11:07:07

J'ai fait face au problème similaire et j'ai constaté que le lien symbolique dans les données du programme(C:\ProgramData\Oracle\Java\javapath) avait tort. J'ai donné le bon chemin et cela a fonctionné.

Des détails sur la façon de corriger les données du programme sont disponibles ici

 1
Author: Siva Kameswara Rao Munipalle, 2017-05-23 10:31:39

Une autre réponse pourrait être d'utiliser le tar.fichier gz à la place dans le cas Linux. Il semble y avoir quelque chose comme ça aussi pour la plate-forme solaris. De cette façon, tous les fichiers seront déjà dans le format attendu et il n'y aura aucun problème de déballage.

 0
Author: Rythmic, 2013-09-23 15:45:36

J'ai le 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 succès du marquage):

Unpacking JAR files...
        rt.jar...
/var/tmp/rpm-tmp.zLzkkb: /usr/java/jdk1.7.0_40/bin/unpack200: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_40/jre/lib/rt.jar

File /lib/ld-linux.so.2 est fourni par glibc-2.12-1.107.el6_4.4. i686 qui n'est pas parmi les rpm deps de jdk rpm.

Oracle JDK rpm nécessite également des versions 32 bits de libgcc-4.4.7-3.el6. i686 à installer

Donc, la solution de contournement est de installez glibc-2.12-1.107.el6_4.4.i686 et libgcc-4.4.7-3.el6.i686 d'abord.

 0
Author: scrutari, 2013-10-15 08:17:42

Solution Rapide qui a fonctionné pour moi:

for file in $(find "$JAVA_HOME" -name "*pack")
do 
    unpack200 "${file}" "${test_file/%pack/jar}";
done
 0
Author: Liudvikas, 2016-01-27 14:34:54

J'ai trouvé que cette erreur s'est produite lorsque j'ai extrait les .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. Également: export JAVA_HOME=/opt/java/jdk1.7.0_79 l'exportation JDK_HOME=/opt/java/jdk1.7.0_79 export PATH=${JAVA_HOME}/bin

 0
Author: user5974531, 2016-02-24 12:38:12

Il suffit d'installer le jre nouveau. Cela a simplement résolu mon problème. (Le lot de démarrage SonarQube a commencé à donner cette erreur après avoir installé jdk)

 0
Author: stratovarius, 2016-08-24 22:43:49

Allez dans le 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.

 0
Author: Ateeque Shaikh, 2016-09-30 08:11:56

Vient de le faire sur Solaris et a 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 beaucoup plus petites que les 32 bits. Il 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, et la 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:

Sh jdk-6u131-solaris-sparc.sh

Ensuite, j'ai exécuté le programme d'installation pour le 64 bits:

Sh jdk-6u131-solaris-sparcv9.sh

Cela me donne plusieurs exécutables java à choisir:

  • find trouver . -nom java
  • ./jdk1.6.0_131/db/demo/programmes/scores/java
  • ./jdk1.6.0_131/db/demo/programmes/ifp/java
  • ./jdk1.6.0_131/bin / java
  • ./jdk1. 6. 0_131 / bin / sparcv9 / java
  • ./jdk1.6.0_131/jre/bin / java
  • ./jdk1. 6. 0_131/jre/bin / sparcv9 / java

Les java sparcv9 sont les versions 64 bits et ils fonctionnent avec "-version" lorsqu'ils sont installés à côté du JDK 32 bits.

  • ./jdk1.6.0_131/bin/sparcv9/java -version
  • version java "1.6.0_131"
  • Il est possible de créer un environnement d'exécution Java(TM) SE (build 1.6.0_131-b32) Il est possible de créer un serveur virtuel Java HotSpot (TM) 64 bits (build 20.131-b32, mode mixte)

- Dan

 0
Author: user7323228, 2016-12-20 23:09:32

Dans la fenêtre 10, il y a déjà un chemin présent dans env as C:\>ProgramData\Oracle\Java\javapath qui contient des liens symboliques vers les exécutables.

Lorsque j'installe une nouvelle version et que je la supprime de ma variable d'environnement, tout mon projet commence à l'afficher.

J'utilise eclipse oxygen dans la fenêtre 10

Pour le résoudre:-

  1. Je supprime simplement path C:\>ProgramData\Oracle\Java\javapath de la variable d'environnement et ajoute un nouvel env en tant que JAVA_HOME et % JAVA_HOME% / bin dans path

  2. Je réinstalle le jdk avec admin privilèges (supprimer le dossier JRE précédent)

  3. Ouvrez votre projet eclipse > Clic droit > Aller aux propriétés> Dans les bibliothèques > Maintenant supprimer la Bibliothèque système JRE > Cliquez sur Ajouter une bibliothèque > sélectionnez "Bibliothèque système JRE" > Cliquez sur Suivant > Sélectionnez "Espace de travail par défaut JRE(jre1.8.x_xxx) " > terminer

Mon problème est résolu :) J'espère que cela vous aidera:)

 0
Author: Shubham Jain, 2017-07-01 08:35:45

Cela a résolu le problème que j'avais sur CentOS

sudo yum install java-1.8.0-openjdk-devel

Voir aussi définir JAVA_HOME & CLASSPATH dans CentOS 6

 0
Author: Joe Jadamec, 2018-01-26 18:19:57

Donc, j'ai continué à tout essayer et enfin il semble que la réinstallation de java après l'avoir désinstallé ait résolu mon problème.

 0
Author: Plabon Dutta, 2018-01-28 23:05:56

Je faisais face au même problème: Une erreur s'est produite lors de l'initialisation de la machine virtuelle java / lang/NoClassDefFoundError: java/lang / Object

Suivez les étapes ci-dessous pour résoudre le problème :

Étape 1. Aller C:\Program Fichiers \ et rechercher le dossier Java.

Étape 2. Supprimer C:\Program Fichiers \ dossier Java.

Étape 3. Téléchargez le nouveau Jdk pour votre version 32 bits / 64 bits depuis http://www.oracle.com/technetwork/java/javase/downloads/index.html

Étape 4. Installer JDK

Étape 5: Maintenant, définissez JAVA_HOME sur "C:\Program Fichiers\Java \ jdk1.8. 0_91"

Étape 6: Ouvrez l'invite de commande et entrez java-version.

Ça marche.

 -1
Author: Mahesh Sutar, 2016-06-28 08:41:37

J'ai rencontré le même problème, j'ai installé deux versions java, ce qui a provoqué ce problème. pour confirmer cela, allez et cliquez sur l'icône java dans le panneau de configuration si ne s'ouvre pas, le problème est le même, allez simplement désinstaller une version. morceau de gâteau. grâce.

 -1
Author: srinivasan Elangovan, 2016-08-09 12:36:54

Sous Windows, cela fonctionne pour moi

C:\jdk-8u162-windows-x64\jre\lib>..\..\bin\unpack200 -r -v rt.pack rt.jar
 -1
Author: V. Kalyuzhnyu, 2018-03-10 14:41:50