JRE 1.7 - java-versjon - returnerer: java/lang/NoClassDefFoundError: java/lang/Object
Når du kjører en java-applikasjon, eller bare 'java', mislykkes jvm:
Det oppstod en feil under initialisering av VM java/lang/NoClassDefFoundError: java/lang/Object
Her er en liste over gale svar:
-
Den riktige Java-hjemmekatalogen, inkludert /bin-katalogen, er på den globale PATH-en.
-
JAVA_HOME er riktig angitt
-
Utførelse av kommandoen java -fullversion fungerer.
$ java -fullversion ./java fullversjon "1.7.0_05-b05"
-
De symbolske lenkene i /usr/java peker alle til riktig java-installasjon.
-
Jeg installerte ingen 'standard' java da jeg opprettet systemet.
-
java -version
mislykkes ... samme feil som ovenfor. -
Å utføre kommandoene fra under katalogstrukturen til java-installasjonen fungerer heller ikke.
-
Dette er 64-biters java for en 64-biters
Har du noen forslag?
131
3
Dette problemet skyldes en feilaktig Java-installasjon.
Mulighet 1
BEMERK: Dette scenariet gjelder bare for Java 8 og tidligere. Fra og med Java 9 er JRE strukturert på en annen måte. rt.jar og venner finnes ikke lenger, og Pack200 brukes ikke lenger.
Javas standardbibliotek finnes i ulike JAR-filer, for eksempel
rt.jar
,deploy.jar
,jsse.jar
osv. Når JRE pakkes, komprimeres disse kritiske JAR-filene med Pack200 og lagres somrt.pack
,deploy.pack
,jsse.pack
osv. Det er meningen at Java-installasjonsprogrammet skal dekomprimere dem. Hvis du opplever denne feilen, har det tydeligvis ikke skjedd.Du må kjøre
unpack200
manuelt på alle.pack
-filer i JRE'slib/
oglib/ext/
mapper.Windows
For å pakke ut en
.pack
-fil (for eksempelrt.pack
), kjør:For å pakke ut alle
.pack
-filer rekursivt fra JRE-roten, kjør:*nix
For å pakke ut en
.pack
-fil (for eksempelrt.pack
), kjør:For å pakke ut alle
.pack
-filer rekursivt fra JRE-roten, kjør:Mulighet 2
Du har feilinstallert Java på en annen måte. Kanskje du installerte uten administratorrettigheter, eller prøvde å pakke ut filer fra installasjonsprogrammet. Prøv igjen med installasjonsprogrammet og/eller flere rettigheter. Eller, hvis du ikke vil bruke installasjonsprogrammet, kan du bruke
.tar.gz
Java-pakken i stedet.Det ser ut til at for en 64-biters arkitektur må du installere både 32-bitersversjonen og 64-bitersversjonen av jre (arkitekturuavhengige filer som rt.jar distribueres bare i 32-bitersversjonen).
Husk da å være oppmerksom på å inkludere den riktige kjørbare java-filen i den globale PATH-miljøvariabelen.
Et annet svar kan være å bruke tar.gz-filen i stedet i Linux-tilfellet. Det ser ut til å finnes noe lignende også for Solaris-plattformen. På denne måten vil alle filene allerede være i det forventede formatet, og det vil ikke være noen utpakkingsproblemer.