JRE 1.7返回:java / lang / NoClassDefFoundError:java / lang / Object

问题

当运行任何java应用程序或只是'java'时,jvm失败:

在初始化VM java / lang / NoClassDefFoundError期间发生错误:java / lang / Object

这是一个错误列表:

  • 正确的Java主目录(包括/ bin目录)位于全局PATH上
  • JAVA_HOME设置正确
  • 执行命令java -fullversion工作$ java -fullversion

./java完整版"1.7.0_05-b05"

  • / usr / java中的符号链接都指向正确的java安装
  • 我在创建系统时没有安装任何'default'java
  • java -version失败...与上面相同的错误
  • 从java安装的目录结构下发出命令也不起作用
  • 对于64位,这是64位java

有任何想法吗?


#1 热门回答(171 赞)

问题来自不正确的Java安装(例如,没有管理员权限的安装或只是解压缩tools.zip)。

你可以卸载,然后使用安装程序和/或更多权限重新安装Java,也可以尝试以下操作:

检查你的JDK文件夹中的*.packfiles injre/libjre/lib/extss,如rt.pack(Microsoft Windows的默认位置是c:\nameof_jdk_folder\jre\lib,Unix / GNU Linux的默认位置是/usr/java/lib)

需要使用以下命令将*.pack文件解压缩到.jar文件:

  • 对于Windows:%JAVA_HOME%\ bin \ unpack200 -r -v -l""rt.pack rt.jar
  • 对于* nix,类似的命令行将解压缩文件:cd / usr / java / lib / usr / bin / unpack200 rt.pack rt.jar

并使用所有* .pack文件重复该步骤并重新启动你的程序。


#2 热门回答(19 赞)

对于java 8 @ * NIX OS:

来自目录"<jdk1.8_root>/jre/lib"(对我来说:/usr/java/jdk1.8.0_05/jre/lib)

跑:

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

(可能你不能使用系统的unpack200导致版本问题。)这个unpack200在java 8目录中(对我来说:/usr/java/jdk1.8.0_05/bin)

贝内德克


#3 热门回答(12 赞)

似乎对于64位架构,你必须同时安装32位版本和64位版本的jre(架构无关文件,因为rt.jar仅在32位版本中分发)。

请记住,要注意在全局PATH环境变量中包含正确的java可执行文件。