Wenn Sie eine Java-Anwendung oder nur 'Java' ausführen, schlägt die JVM fehl:
Bei der Initialisierung der VM
java / lang / NoClassDefFoundError ist ein Fehler aufgetreten : java / lang / Object
Hier ist eine Liste falscher Antworten:
Das richtige Java-Ausgangsverzeichnis, einschließlich des Verzeichnisses / bin, befindet sich im globalen Pfad
JAVA_HOME ist richtig eingestellt
Das Ausführen des Befehls java -fullversion funktioniert
$ java -fullversion ./java full version "1.7.0_05-b05"
Die symbolischen Links in / usr / java verweisen alle auf die richtige Java-Installation
Ich habe beim Erstellen des Systems kein 'Standard'-Java installiert
java -version
schlägt fehl ... gleicher Fehler wie obenDas Ausgeben der Befehle unter der Verzeichnisstruktur der Java-Installation funktioniert ebenfalls nicht
Dies ist 64-Bit-Java für ein 64-Bit
Irgendwelche Ideen?
rt.jar
Datei gibt, dasJVM
zum Zeitpunkt des Ladens erforderlich istJRE
Antworten:
Dieses Problem ist auf eine fehlerhafte Java-Installation zurückzuführen.
Möglichkeit 1
Die Java - Standardbibliothek ist in verschiedenen JAR - Dateien enthalten sind , wie
rt.jar
,deploy.jar
,jsse.jar
usw. Wenn die JRE verpackt ist, diese kritischen JAR - Dateien mit komprimiert werden Pack200 und gespeichert , wiert.pack
,deploy.pack
,jsse.pack
usw. Das Java - Installer zu dekomprimieren sie soll. Wenn dieser Fehler auftritt, ist dies anscheinend nicht geschehen.Sie müssen
unpack200
alle.pack
Dateien in den JREslib/
undlib/ext/
Ordnern manuell ausführen .Windows
Führen Sie zum Entpacken einer
.pack
Datei (zum Beispielrt.pack
) Folgendes aus:So rekursieren Sie alle
.pack
Dateien rekursiv aus dem JRE-Stammlauf:* nix
Führen Sie zum Entpacken einer
.pack
Datei (zum Beispielrt.pack
) Folgendes aus:So rekursieren Sie alle
.pack
Dateien rekursiv aus dem JRE-Stammlauf:Möglichkeit 2
Sie haben Java auf andere Weise falsch installiert. Möglicherweise haben Sie ohne Administratorrechte installiert oder versucht, einfach Dateien aus dem Installationsprogramm zu extrahieren. Versuchen Sie es erneut mit dem Installationsprogramm und / oder weiteren Berechtigungen. Wenn Sie das Installationsprogramm nicht verwenden möchten, verwenden Sie
.tar.gz
stattdessen das Java-Paket.quelle
for %i in (*.pack) do (..\bin\unpack200 "%i" "%~ni.jar" & del "%i")
(Vielleicht werde ich es eines Tages etwas robuster machen, damit ich den Pfad nicht manuell ändern muss, aber.gz
andererseits benutze ich normalerweise nur die Version der JRE, die sie nicht packt. )Für Java 8 unter einem * nix-Betriebssystem gehen Sie zu
<jdk root>/jre/lib
(für mich/usr/java/jdk1.8.0_05/jre/lib
). Führen Sie in diesem Verzeichnis Folgendes aus:Um Versionsprobleme zu vermeiden, falls Sie eine andere JRE installiert haben, verwenden Sie dieselbe
unpack200
, die mit der JRE geliefert wird, die Sie reparieren - das heißt, verwenden Sie in der Befehlszeile../../bin/unpack200
(für mich wird dies erweitert/usr/java/jdk1.8.0_05/bin/unpack200
), nicht nurunpack200
.quelle
"<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
Es scheint, dass Sie für eine 64-Bit-Architektur sowohl die 32-Bit-Version als auch die 64-Bit-Version von jre installieren müssen (architekturunabhängige Dateien wie rt.jar werden nur in der 32-Bit-Version verteilt).
Denken Sie dann daran, die richtige ausführbare Java-Datei in die globale Umgebungsvariable PATH aufzunehmen.
quelle
architecture independent files as rt.jar are distributed only in the 32-bin version
?Schnelle Lösung für ungeduldige Menschen;) Versuchen Sie auf Windows- Computern Folgendes: Gehen Sie zum
C:\Windows\System32
Verzeichnis und löschen Sie esjava.exe
(oder benennen Sie es in etwas Ähnliches umjava.exe.old
).Seit mindestens 1.6 sollte es kein
java.exe
im Windows-Verzeichnis geben. Wenn ja, ist es ein Überbleibsel von etwas.Ein bisschen mehr lesen:
Ich bin wirklich überrascht, dass eine Frage aus dem Jahr 2012 noch keine genehmigte Antwort hat und ich 2015 auf meinem Win 7 32-Bit-Betriebssystem auf dasselbe Problem gestoßen bin!
Was ist also passiert?
Grundsätzlich hat alles gut funktioniert, ich habe die H2-Datenbank heruntergeladen und als ich versuchte zu starten,
H2 Console (Command Line)
bekam ich:Ich fand diese Frage und konnte die gleichen Symptome bestätigen:
JAVA_HOME ist richtig eingestellt:
java -version
schlägt fehl,java --fullversion
funktioniert aber einwandfrei:LÖSUNG: Gehen Sie zum
C:\Windows\System32
Verzeichnis und löschen Sie diejava.exe
Datei (die ich tatsächlich umbenannt habe) !!!!Jetzt bekomme ich:
und
H2 Console (Command Line)
funktioniert auch gut!Credits gehen an den letzten Beitrag in diesem Forum: https://bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/
quelle
C:\ProgramData\Oracle\Java\javapath
das Problem. Ich ändere die Umgebungsvariable PATH und jetzt funktioniert es.Ich habe heute das neue JDK heruntergeladen (1.8.0.73) gestartet
c:> java.exe
und das berüchtigte bekommen:Ich wollte hier nur meine Arbeitslösung teilen.
Wenn ich in den
jdk\bin
Ordner kam, lief Java einwandfrei , also wusste ich, dass es das warPATH
. Ich habePATH
nur\jdk\bin
bei CMD , es zu beweisen und es funktionierte.Also, einer der Ordner im
PATH
Mustjava.exe
, der den Konflikt verursacht hat, dachte ich. Wie sich herausstellte , war es ,C:\>ProgramData\Oracle\Java\javapath
dass hält Symlinks zu den ausführbaren Dateien.java.exe
zeigte aufjre\bin
. Die Datei war beim Start\jre\bin\java.exe
beschädigt - genau der gleiche Fehler. Bingo. Ich habe JRE neu installiert und das Problem ist behoben. Viel Spaß beim Codieren ...quelle
In Ihrer Installation fehlt höchstwahrscheinlich eine Datei mit dem Namen rt.jar, die die Klassendatei für java.lang.Object enthält. Überprüfen Sie Ihre Installationsdateien usw.
Beachten Sie insbesondere, dass ein 64-Bit-Intersaller eine vorhandene 32-Bit-Installation überlagert (oder "neben" installiert). Mit anderen Worten, um eine voll funktionsfähige 64-Bit-Installation zu erhalten, müssen Sie zuerst die 32-Bit-Installation ausführen und anschließend eine 64-Bit-Installation durchführen, wenn Sie einen 64-Bit-fähigen Computer haben ...
Wenn Sie stattdessen nur eine 64-Bit-Installation durchführen, fehlen Ihnen bestimmte Dateien in der Installation und es werden Fehler wie die oben genannten angezeigt.
quelle
Unter Windows 10 hatte ich das gleiche Problem mit JRE 1.8 (8u121).
Tippen
Die Eingabeaufforderung cmd kehrt zurück
Alle anderen Befehle
echo %JAVA_HOME%
,echo %JRE_HOME%
,echo %PATH%
,java -fullversion
hat gut funktioniert.Gehen Sie zu Umgebungsvariablen im Systemverwaltungsfenster, entfernen Sie den Link aus PATH
C:\ProgramData\Oracle\Java\javapath
und stellen Sie sicher, dass Sie in PATH den Link zu festgelegt habenC:\Program Files\Java Folder\bin
.Überprüfen Sie danach, ob
C:\Windows\System32
einejava.exe
Datei vorhanden ist. Wenn true, löschen Sie diese Datei.Wenn Sie jetzt tippen
java -version
, funktioniert es einwandfrei.quelle
C:\Program Files\Java Folder\bin
. Stattdessen benutze ichC:\Program Files\Java\jdk1.8.0_161\bin
aber es hilft mir trotzdem nicht. Es gibt keine Datei java.exe im Ordner System32Dieses Problem tritt auf, wenn Sie das JDK
_uncompressing_
stattdessen installieren_executing_
.Zum Beispiel:
Im ersten Szenario werden die Laufzeitbibliotheken als rt.jar nicht automatisch dekomprimiert (daher finden Sie die rt.pack-Dateien usw. anstelle der .jar-Dateien).
quelle
Ich hatte kürzlich das gleiche Problem. In meinem Fall hat mein Windows 7-Computer Java automatisch heruntergeladen und
C:\ProgramData\Oracle\Java\javapath
am Anfang meiner Pfadumgebungsvariablen hinzugefügt , was mein Java durcheinander gebracht hat. Sobald ich das vom Weg entfernt hatte, funktionierte es.quelle
Wenn Sie "chmod u + rx" für die Java-Binärdatei ausführen und ausführen, werden die JAR-Dateien entpackt, und Sie können eine Java-Version ohne Laufzeitfehler ausführen
quelle
Sie können nicht nur das 64-Bit installieren, sondern müssen zuerst das 32-Bit installieren und dann die 64-Bit-Komponenten hinzufügen.
Von java.com:
quelle
Wenn Sie eine 64-Bit-Version installieren, ohne zuvor 32-Bit zu installieren, tritt dieser Fehler trotz Behebung aller anderen Probleme auf. Ich habe einen brandneuen Dell i7 64-Bit-Windows 10 Pro-Computer mit Java 8u71. Nachdem ich meine% path% und% classpath% zu Umgebungsvariablen hinzugefügt und mehrere andere Korrekturen versucht habe, habe ich 64-Bit deinstalliert, 32-Bit installiert und dann 64-Bit neu installiert.
Einige der Probleme, wie das Nicht-Entpacken Ihrer Dateien usw., die als mögliche Ursachen genannt wurden, können weiterhin Probleme verursachen. Wenn Sie dies jedoch nicht tun, funktionieren die anderen Korrekturen nicht.
quelle
In meinem Fall verwende ich Windows 8.1 (installiert jdk1.8.0_77), ich habe drei Dinge getan:
und voila hat es repariert!
quelle
Ich habe das ähnliche Problem festgestellt und festgestellt, dass der Symlink in den Programmdaten (C: \ ProgramData \ Oracle \ Java \ javapath) falsch war. Ich habe den richtigen Weg angegeben und es hat funktioniert.
Details zur Korrektur der Programmdaten finden Sie hier
quelle
Eine andere Antwort könnte sein, stattdessen die Linux-Datei tar.gz im Linux-Fall zu verwenden. So etwas scheint es auch für die Solaris-Plattform zu geben. Auf diese Weise haben alle Dateien bereits das erwartete Format und es treten keine Probleme beim Entpacken auf.
quelle
Ich habe ein Problem bei x86_64-Linux-Installationen mit JDK 1.7.0_40 i586. Ich habe herausgefunden, dass das Problem darin besteht, dass rpm keine JAR-Dateien entpacken kann, wie von Rigg802 erwähnt (obwohl rpm den Markierungserfolg vervollständigt):
Die Datei /lib/ld-linux.so.2 wird von glibc-2.12-1.107.el6_4.4 bereitgestellt. i686, der nicht zu den Drehzahlabweichungen von jdk rpm gehört.
Oracle JDK rpm erfordert außerdem 32-Bit-Versionen von libgcc-4.4.7-3.el6. i686 installiert werden
Um dieses Problem zu umgehen, müssen Sie zuerst glibc-2.12-1.107.el6_4.4.i686 und libgcc-4.4.7-3.el6.i686 installieren.
quelle
Schnelle Lösung, die bei mir funktioniert hat:
quelle
Ich habe festgestellt, dass dieser Fehler beim Extrahieren der RPM-Datei aufgetreten ist.
Ich habe dann diesen Ordner entfernt und jdk-7u79-linux-x64.tar.gz für Linux 64 heruntergeladen und stattdessen den Inhalt dieser Datei extrahiert. Außerdem: export JAVA_HOME = / opt / java / jdk1.7.0_79 export JDK_HOME = / opt / java / jdk1.7.0_79 export PATH = $ {JAVA_HOME} / bin
quelle
Installieren Sie einfach den JRE erneut . Es hat einfach mein Problem gelöst. (Der SonarQube-Startstapel hat diesen Fehler nach der Installation von jdk ausgegeben.)
quelle
Gehen Sie zur Systemsteuerung, deinstallieren Sie das Java-bezogene Material (schließen Sie Eclipse, wenn es geöffnet wird), installieren Sie Java erneut und öffnen Sie Eclipse, bereinigen Sie Projekte.
quelle
Habe dies gerade unter Solaris gemacht und bin auf dieses identische Problem gestoßen, bei dem selbst "Java-Version" nicht funktioniert. Es gibt einen Grund, warum die 64-Bit-Versionen der Distribution viel kleiner sind als die 32-Bit-Version. Es ist in der Tat wie oben angegeben:
Mit anderen Worten, um eine voll funktionsfähige 64-Bit-Installation zu erhalten, müssen Sie zuerst die 32-Bit-Installation ausführen und anschließend eine 64-Bit-Installation durchführen, wenn Sie einen 64-Bit-fähigen Computer haben ...
Also habe ich das Installationsprogramm für das 32-Bit ausgeführt:
Dann habe ich das Installationsprogramm für das 64-Bit ausgeführt:
Dadurch habe ich mehrere ausführbare Java-Dateien zur Auswahl:
Die sparcv9-Java-Versionen sind 64-Bit-Versionen und funktionieren mit "-version", wenn sie zusammen mit dem 32-Bit-JDK installiert werden.
-Dan
quelle
/usr/java
also eindeutig auf ein Linux / Unix-ähnliches Betriebssystem. Sie haben Recht, dass sich die Solaris-Installation von Java bis Java8 von jedem anderen Betriebssystem unterschied. Grundsätzlich mussten Sie zuerst das 32-Bit-Paket und dann das 64-Bit-Paket darüber installieren . Aber das ist alles in der Vergangenheit, da 32-Bit-Java unter Solaris nicht mehr unterstützt wird, ähnlich wie bei Mac OS X.In Fenster 10 ist in env bereits ein Pfad vorhanden
C:\>ProgramData\Oracle\Java\javapath
, der Symlinks zu den ausführbaren Dateien enthält.Wenn ich eine neue Version installiere und diese aus meiner Umgebungsvariablen entferne, wird sie in meinem gesamten Projekt angezeigt.
Ich verwende Eclipse-Sauerstoff in Fenster 10
So beheben Sie das Problem: -
Ich entferne einfach den Pfad
C:\>ProgramData\Oracle\Java\javapath
aus der Umgebungsvariablen und füge eine neue Umgebung als JAVA_HOME und% JAVA_HOME% / bin im Pfad hinzuIch installiere das JDK mit Administratorrechten neu (lösche den vorherigen JRE-Ordner)
Mein Problem ist behoben :) Hoffe es wird dir helfen :)
quelle
Dies hat das Problem behoben, das ich unter CentOS hatte
Siehe auch Festlegen von JAVA_HOME & CLASSPATH in CentOS 6
quelle
Also habe ich alles ausprobiert und es scheint, dass die Neuinstallation von Java nach der Deinstallation mein Problem behoben hat.
quelle
Wenn ein Problem mit der JAVA-Installationsversion vorliegt
C: \ Wo JAVA
gibt den Ort von Java an, den es aufnimmt. Wenn Sie einen anderen Pfad als Ihre Installation haben, entfernen Sie diese Dateien oder benennen Sie sie um (möglicherweise als _backup). Sie erhalten die richtige Version der Java-Datei.
quelle
Ich hatte das gleiche Problem, ich habe zwei Java-Versionen installiert, daher hat es dieses Problem verursacht. Um dies zu bestätigen, klicken Sie in der Systemsteuerung auf das Java-Symbol. Wenn es nicht geöffnet wird, ist das Problem dasselbe. Gehen Sie einfach und deinstallieren Sie eine Version. Stück Kuchen. Vielen Dank.
quelle
Ich hatte das gleiche Problem: Fehler beim Initialisieren der VM java / lang / NoClassDefFoundError: java / lang / Object
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
Schritt 1. Gehen Sie zu C: \ Programme \ und suchen Sie nach dem Java-Ordner.
Schritt 2. Löschen Sie den Ordner C: \ Programme \ Java.
Schritt 3. Laden Sie neues Jdk für Ihre Version 32 Bit / 64 Bit von http://www.oracle.com/technetwork/java/javase/downloads/index.html herunter
Schritt 4. Installieren Sie JDK
Schritt 5: Setzen Sie JAVA_HOME nun auf "C: \ Programme \ Java \ jdk1.8.0_91".
Schritt 6: Öffnen Sie die Eingabeaufforderung und geben Sie java -version ein.
Es klappt.
quelle