JRE 1.7-java version-returns: java / lang/Noclassdeffonderror: java/lang / Object

lors de l'exécution de n'importe quelle application java, ou tout simplement 'java', la jvm échoue:

Erreur s'est produite lors de l'initialisation de la VM

java / lang / Noclassdeffonderror: java/lang / Object

Ici est une liste de mauvais réponses:

  1. le répertoire Java home correct, y compris le répertoire /bin, est sur le chemin global

  2. JAVA_HOME est correctement réglé

  3. exécuter la commande java-fullversion works

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

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

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

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

  8. c'est du java 64 bits pour un

des idées?

119
demandé sur Ravi Parekh 2012-08-04 16:52:38

27 réponses

le problème vient d'une installation java incorrecte (par exemple une installation faite sans droits d'administrateur ou simplement en déballant les outils.zip.)

vous pouvez soit désinstaller, puis réinstaller Java avec un installateur 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éballés dans les fichiers .jar en utilisant cette commande:

  • Pour Windows:

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

  • Pour *nix, un analogue de la ligne de commande va décompresser 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 de relancer votre programme.

171
répondu Rigg802 2014-01-23 15:25:53

For java 8 @ * NIX OS:

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

Run:

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

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

Benedek

20
répondu 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).

N'oubliez pas de faire attention à inclure le bon exécutable java dans la variable D'environnement global PATH.

12
répondu Tommaso 2012-10-10 09:40:28

Solution Rapide pour les personnes impatientes ;) 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. Si il l'est, c'est un vestige 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 Win 7 32-Bit OS!

que s'est-il passé?

fondamentalement, 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 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 réglé correctement:

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

java -version échoue, tandis que java --fullversion fonctionne amende:

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é) le fichier java.exe !!!!

maintenant, je comprends:

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 aussi bien!

crédits aller à la dernière poste dans ce forum: https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/

11
répondu iaforek 2017-03-15 22:18:12

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

en particulier, notez qu'un intsaller 64 bits superpose (ou installe" next to") une installation 32 bits existante. En d'autres termes, pour obtenir une installation 64 bits entièrement fonctionnelle, vous devez d'abord lancer l'installation 32 bits, et suivre cela avec une installation 64 bits si vous avez une machine 64bit capable...

si au lieu de cela vous ne faites qu'une installation 64 bits, il vous manquera certains fichiers dans l'installation et vous obtiendrez des erreurs comme celle ci-dessus.

8
répondu user3213415 2014-01-20 00:44:54

j'ai téléchargé new 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 fonctionnait très bien donc je savais que c'était le PATH . J'ai mis PATH à \jdk\bin au CMD pour le prouver et ça a marché.

, l'un des dossiers dans le PATH a dû avoir java.exe qui causait le conflit, je pensais. Comme il s'est avéré ,c'est C:\>ProgramData\Oracle\Java\javapath qui tient symlinks aux exécutables.

java.exe pointait vers jre\bin . Le fichier était corrompu, quand j'ai commencé \jre\bin\java.exe --la même erreur. Bingo. J'ai réinstallé JRE et le problème a disparu. Heureux de codage...

8
répondu Striker 2016-03-04 01:58:22

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

par exemple:

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

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

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

5
répondu kdn 2015-10-06 11:33:08

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

Dactylographie

java -version

le prompt retour cmd

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 a bien marché.

aller aux variables d'environnement sur le panneau d'administration du système, supprimer du chemin le lien C:\ProgramData\Oracle\Java\javapath , et être sûr d'avoir mis dans le chemin 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 vrai, supprimez ce fichier.

tapant maintenant java -version ça marche très bien.

5
répondu 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 perturbé mon java. Une fois débarrassé du chemin, ça a marché.

4
répondu developer747 2016-01-25 22:03:43

si vous faites "chmod u+rx" sur le binaire java et l'exécuter, il va déballer les fichiers jar et vous pouvez faire une version java sans erreurs d'exécution

3
répondu Peter Nielsen 2014-08-20 14:19:05

vous ne pouvez pas installer uniquement le 64bit, vous devez d'abord installer le 32bit et ensuite ajouter les composants 64bit.

de java.com:

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

3
répondu Andrew Speer 2014-08-21 21:06:49

si vous installez une version 64-bit sans installer d'abord 32-bit, cette erreur se produira malgré la correction de tous les autres problèmes. J'ai une toute nouvelle machine Dell i7 64 bits Windows 10 Pro qui exécute Java 8u71. Après avoir ajouté mon % path% et % classpath% aux variables d'environnement et essayé plusieurs autres correctifs, désinstaller 64-bit, Installer 32-bit puis réinstaller 64-bit corrigé.

certains des problèmes, comme le fait de ne pas avoir vos fichiers déballés, etc. qui ont été mentionnés comme causes possibles peuvent encore causer des problèmes, mais si vous ne le faites pas, ainsi, les autres correctifs ne fonctionneront pas.

1
répondu Bryan Robinson 2016-01-27 05:33:16

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

  1. I supprimé jdks
  2. j'ai renommé le java.fichier exe à l'intérieur C:\Windows\System32
  3. j'ai aussi supprimé C:\ProgramData\Oracle\Java\javapath in my PATH (echo % PATH%)

et voilà!

1
répondu kashogi 2016-04-04 11:07:07

j'ai fait face à la même question et j'ai constaté que le lien symbolique dans les données d'émission(C:\ProgramData\Oracle\Java\javapath) was wrong. J'ai donné le bon chemin et ça a marché.

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

1
répondu Siva Kameswara Rao Munipalle 2017-05-23 10:31:39

une Autre réponse pourrait être d'utiliser le goudron.gz fichier au lieu de le 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 prévu et il n'y aura pas de problèmes de déballage.

0
répondu Rythmic 2013-09-23 15:45:36

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éballer les fichiers jar, comme mentionné par Rigg802 (bien que rpm termine le succès de 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.alors?2 est fourni par glibc-2.12-1.107.el6_4.4. i686 qui n'est pas parmi les régimes 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 est d'installer glibc-2.12-1.107.el6_4.4.i686 et libgcc-4.4.7-3.el6.i686 d'abord.

0
répondu scrutari 2013-10-15 08:17:42

Quick fix qui a fonctionné pour moi:

for file in $(find "$JAVA_HOME" -name "*pack")
do 
    unpack200 "${file}" "${test_file/%pack/jar}";
done
0
répondu 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 retiré 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 export JDK_HOME= / opt / java / jdk1.7.0_79 export PATH= $ {JAVA_HOME} / bin

0
répondu user5974531 2016-02-24 12:38:12

il suffit d'installer le jre à nouveau . Simplement, il a résolu mon problème. (Le lot de démarrage de SonarQube a commencé à donner cette erreur après que j'ai installé jdk)

0
répondu stratovarius 2016-08-24 22:43:49

aller au panneau de configuration, Désinstaller les éléments liés à java(fermer eclipse si ouvert), puis réinstaller java et open eclipse, nettoyer les projets.

0
répondu Ateeque Shaikh 2016-09-30 08:11:56

vient de le faire sur Solaris et a rencontré ce même problème où même" java-version " ne fonctionne pas. Il y a une raison pour laquelle les versions 64 bits de la distro 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 lancer l'installation 32 bits, et ensuite avec une installation 64 bits si vous avez une machine 64bit capable...

alors j'ai couru le installateur pour le 32-bit:

sh jdk-6u131-solaris-sparc.sh

puis j'ai lancé l'installateur pour le 64-bit:

sh jdk-6u131-solaris-sparcv9.sh

cela me donne plusieurs exécutables java à choisir:

  • $ find . - 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 de sparcv9 sont les versions 64bit et ils fonctionnent avec "- version " lorsqu'ils sont installés à côté du JDK 32bit.

  • ./ jdk1.6.0_131 / bin/sparcv9 / java-version
  • version java "1.6.0_131"
  • Java (TM) SE Runtime Environment (build 1.6.0_131-b32)
  • Java HotSpot (TM) 64-Bit Server VM (build 20.131-b32, mixed mode)

- Dan

0
répondu user7323228 2016-12-20 23:09:32

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

quand j'installe une nouvelle version et que je la supprime de ma variable d'environnement, mon projet tout entier commence à la montrer.

j'utilise de l'oxygène eclipse dans la fenêtre 10

pour le résoudre: -

  1. je viens de retirer chemin C:\>ProgramData\Oracle\Java\javapath à partir de la variable d'environnement et d'ajouter une nouvelle env as JAVA_HOME et % JAVA_HOME% / bin dans le chemin

  2. j'ai réinstallé le jdk avec des privilèges d'administration (supprimer le dossier JRE précédent)

  3. ouvrez votre projet eclipse > clic droit > allez aux propriétés> dans les bibliothèques > maintenant, supprimez 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) "> finition

mon numéro est résoudre :) Espérons qu'il saura vous aider :)

0
répondu Shubham Jain 2017-07-01 08:35:45

cela a corrigé le problème que j'avais sur CentOS

sudo yum install java-1.8.0-openjdk-devel

also see setting JAVA_HOME & CLASSPATH in CentOS 6

0
répondu Joe Jadamec 2018-01-26 18:19:57

donc, j'ai continué à tout essayer et enfin il semble que réinstaller java après l'avoir désinstallé a corrigé mon problème.

0
répondu Plabon Dutta 2018-01-28 23:05:56

j'étais confronté au même problème: une erreur s'est produite lors de l'initialisation de VM java / lang / Noclassdeffonderror: java/lang / Object

suivre les étapes ci-dessous pour résoudre la question:

Étape 1. Goto C:\Program file\ and search for Java folder.

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

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

Étape 4. Installer JDK

Étape 5: Maintenant mettre JAVA_HOME à "C:\Program fichiers\Java\jdk1.8.0_91 "

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

ça marche.

-1
répondu Mahesh Sutar 2016-06-28 08:41:37

j'ai fait face au même problème, j'ai installé deux versions java donc il a causé ce problème. pour confirmer cette aller et cliquer icône java dans le panneau de configuration si doesnt open then issue is same, juste aller et désinstaller une version. morceau de gâteau. grâce.

-1
répondu srinivasan Elangovan 2016-08-09 12:36:54

sur windows cela fonctionne pour moi

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