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 full version "1.7.0_05-b05"
-
/ usr / java中的符号链接都指向正确的java安装
-
当我创build系统时,我没有安装任何'默认'的Java
-
java -version
失败…与上面相同的错误 -
从java安装的目录结构下发出命令也不起作用
-
这是一个64位的64位Java
有任何想法吗?
这个问题来自于不正确的java安装(例如,没有pipe理员权限的安装或者简单地解压缩tools.zip)。
您可以卸载,然后使用安装程序和/或更多权限重新安装Java,也可以尝试以下操作:
在JDK文件夹中检查jre/lib
和jre/lib/ext
*.pack
文件,例如rt.pack
(默认位置是Microsoft Windows的c:\nameof_jdk_folder\jre\lib
/usr/java/lib
,Unix的/usr/java/lib
/ GNU Linux)
这些*.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文件重复该步骤,然后重新启动程序。
对于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)
贝内德克
看起来对于64位体系结构,您必须同时安装jre的32位版本和64位版本(独立于架构的文件,因为rt.jar仅在32位版本中分发)。
请记住,要注意在全局PATH环境variables中包含正确的java可执行文件。
快速解决不耐烦的人;)在Windows机器上,试试这个方法:进入C:\Windows\System32
目录并删除java.exe
(或将其重命名为java.exe.old
东西)。
由于至less1.6,Windows目录中不应该有一个java.exe
。 如果有的话,这是一个剩下的东西。
多一点阅读:
我真的很惊讶,从2012年的一个问题还没有得到批准的答案,我实际上在我的Win 7 32位操作系统遇到了同样的问题在2015年!
那么发生了什么?
基本上,一切工作正常,我下载H2数据库,当我试图启动H2 Console (Command Line)
我得到:
Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
我发现这个问题,我能够确认相同的症状:
JAVA_HOME设置正确:
echo %JAVA_HOME% C:\Program Files\Java\jdk1.6.0_26
java -version
失败,而java --fullversion
工作正常:
java -fullversion java full version "1.6.0_45-b06"
解决scheme:转到C:\Windows\System32
目录并删除(我实际改名) java.exe
文件!
现在,我得到:
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)
和H2 Console (Command Line)
可以正常工作!
学分转到这个论坛的最后一篇文章: https : //bukkit.org/threads/java-lang-noclassdeffounderror-java-lang-object.70450/
你很可能在你的安装中缺less一个名为rt.jar的文件,它具有java.lang.Object的类文件。 检查你的安装文件等
特别要注意的是,一个64位的intsaller覆盖(或“安装”一个现有的32位安装)。 换句话说,要获得完整的64位安装,必须首先运行32位安装,如果您的计算机支持64位,则需要64位安装。
如果你只做一个64位的安装,你会在安装过程中丢失某些文件,并会得到如上所述的错误。
我今天下载了新的JDK(1.8.0.73),启动c:> java.exe
,得到臭名昭着的:
Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
我只是想在这里分享我的工作解决scheme。
当我cd'ied到jdk\bin
文件夹,Java将运行良好,所以我知道这是PATH
。 我把CMD中的PATH
设置为\jdk\bin
来certificate它,它工作。
所以, PATH
中的一个文件夹肯定有java.exe
导致了冲突,我想。 事实certificate,它是C:\>ProgramData\Oracle\Java\javapath
,它保存了可执行文件的符号链接 。
java.exe
指向jre\bin
。 该文件已损坏,当我开始\jre\bin\java.exe
– 完全相同的错误。 答对了。 我重新安装了JRE,问题就消失了。 快乐编码…
当你通过_uncompressing_
而不是_uncompressing_
来安装JDK时,会发生这个问题。
举例来说:
unzip jdk-6u45-linux-x64.bin (wrong) sh ./jdk-6u45-linux-x64.bin (right)
在第一种情况下,运行时库(如rt.jar)不会自动得到低估(因此,您可以findrt.pack文件等,而不是.jar文件)。
我最近有同样的问题。 在我的情况下,我的Windows 7机器自动下载java,并添加C:\ProgramData\Oracle\Java\javapath
到我的path环境variables的开始,这弄乱了我的Java。 一旦我从路上摆脱出来,它就起作用了。
你不能只安装64位,你必须先安装32位,然后添加64位组件。
来自java.com:
在允许32位JVM的64位系统上安装JRE有两个步骤:首先安装32位JRE,然后安装对64位操作的附加支持。 文件名如下:
如果您在java二进制文件上执行“chmod u + rx”并运行它,它将解压jar文件,并且可以执行java -version而不会出现运行时错误
如果在未安装32位的情况下安装64位版本,即使修复了其他所有问题,也会发生此错误。 我有一台全新的运行Java 8u71的戴尔i7 64位Windows 10 Pro机器。 在将%path%和%classpath%添加到环境variables并尝试其他几个修复程序之后,卸载64位,安装32位然后重新安装64位修复它。
一些问题,如没有解开文件等等,这些问题可能是由于可能的原因引起的,但是如果你不这样做,其他修补程序将不起作用。
在我的情况下,我使用的Windows 8.1(安装jdk1.8.0_77),我做了三件事情:
- 我删除了以前的jdks
- 我重命名了C:\ Windows \ System32中的java.exe文件
- 我还删除了我的path中的C:\ ProgramData \ Oracle \ Java \ javapath(echo%PATH%)
瞧它修好了!
我遇到了类似的问题,发现程序数据(C:\ ProgramData \ Oracle \ Java \ javapath)中的符号链接是错误的。 我已经给了正确的道路,它的工作。
有关如何更正程序数据的详细信息,请参阅此处
另一个答案可能是在Linux情况下使用tar.gz文件。 似乎solaris平台也有类似的情况。 这样所有的文件将已经在预期的格式,不会有任何拆箱问题。
我在使用JDK 1.7.0_40 i586的x86_64 Linux安装上遇到了一些问题。 我发现问题在于rpm无法解压jar文件,正如Rigg802所提到的(虽然rpm完成了标记成功):
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
文件/lib/ld-linux.so.2由glibc-2.12-1.107.el6_4.4提供。 i686不在jdk rpm的rpm范围之内。
Oracle JDK rpm也需要32位版本的libgcc-4.4.7-3.el6。 i686要安装
所以,解决方法是首先安装glibc-2.12-1.107.el6_4.4.i686和libgcc-4.4.7-3.el6.i686。
快速修复,为我工作:
for file in $(find "$JAVA_HOME" -name "*pack") do unpack200 "${file}" "${test_file/%pack/jar}"; done
我发现这个错误发生在我提取.rpm文件时。
然后,我删除了该文件夹,并下载了用于Linux 64的jdk-7u79-linux-x64.tar.gz,并提取了该文件的内容。 另外:export JAVA_HOME = / opt / java / jdk1.7.0_79 export JDK_HOME = / opt / java / jdk1.7.0_79 export PATH = $ {JAVA_HOME} / bin
只需再次安装jre。 它只是解决了我的问题。 (SonarQube启动批处理开始给我这个错误后,我安装了JDK)
去控制面板,卸载java相关的东西(closureseclipse,如果打开的话),然后重新安装java并打开eclipse,clean项目。
刚刚在Solaris上做了这个,并遇到这个相同的问题,甚至“java -version”不起作用。 有一个原因,发行版的64位版本是WAY小于32位。 确实如上所述:
换句话说,要获得完整的64位安装,必须首先运行32位安装,如果您的计算机支持64位,则需要64位安装。
所以我运行了32位的安装程序:
sh jdk-6u131-solaris-sparc.sh
然后我运行64位的安装程序:
sh jdk-6u131-solaris-sparcv9.sh
这给我几个Java可执行文件可供select:
- $ find。 -java
- ./jdk1.6.0_131/db/demo/programs/scores/java
- ./jdk1.6.0_131/db/demo/programs/vtis/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
sparcv9 java是64位版本,当与32位JDK一起安装时,它们使用“-version”。
- ./jdk1.6.0_131/bin/sparcv9/java -version
- java版本“1.6.0_131”
- Java(TM)SE运行时环境(版本1.6.0_131-b32)
- Java HotSpot(TM)64位服务器虚拟机(构build20.131-b32,混合模式)
-担
在Windows 10上,我遇到了与JRE 1.8(8u121)相同的问题。
打字
java -version
cmd提示符返回
Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
所有其他命令, echo %JAVA_HOME%
, echo %JRE_HOME%
, echo %PATH%
, java -fullversion
工作正常。
在系统pipe理面板上的环境variables,从PATH中删除链接C:\ProgramData\Oracle\Java\javapath
,并确保在PATH中设置到C:\Program Files\Java Folder\bin
。
之后,检查在C:\System\Windows32
存在一个java.exe
文件; 如果为true,则删除该文件。
现在键入java -version
它工作正常。
在窗口10中,env中已经存在一个path,如C:\>ProgramData\Oracle\Java\javapath
,它保存了可执行文件的符号链接。
当我安装一个新的版本,并从我的环境variables中删除,我的所有项目开始显示它。
我正在窗口10中使用日食氧气
解决它:
-
我只是从环境variables中删除path
C:\>ProgramData\Oracle\Java\javapath
,并将path添加为JAVA_HOME和%JAVA_HOME%/ bin -
我用pipe理员权限重新安装jdk(删除以前的JRE文件夹)
- 打开你的eclipse项目>右键>转到属性>在库>现在删除JRE系统库>点击添加库>select“JRE系统库”>点击下一步>select“工作区默认JRE(jre1.8.x_xxx)”>完
我的问题解决:)希望它会帮助你:)
我面临同样的问题:在Java java / lang / NoClassDefFoundError的初始化期间发生错误:java / lang / Object
按照以下步骤解决问题:
步骤1.转到C:\ Program Files \并searchJava文件夹。
第2步。删除C:\ Program Files \ Java文件夹。
第3步。从http://www.oracle.com/technetwork/java/javase/downloads/index.html下载适用于您的32位/ 64位版本的新Jdk
第4步。安装JDK
第5步:现在将JAVA_HOME设置为“C:\ Program Files \ Java \ jdk1.8.0_91”
第6步:打开命令提示符并inputjava -version。
有用。
我面临同样的问题,我已经安装了两个Java版本,因此它引起了这个问题。 确认这个去控制面板中的java图标,如果没有打开,那么问题是一样的,只要去卸载一个版本。 小菜一碟。 谢谢。