JRE 1.7 – java版本 – 返回:java / lang / NoClassDefFoundError:java / lang / Object

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

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

这是一个错误答案的列表:

  1. 正确的Java主目录(包括/ bin目录)位于全局PATH上

  2. JAVA_HOME设置正确

  3. 执行命令java -fullversion有效

    $ java -fullversion ./java full version "1.7.0_05-b05" 
  4. / usr / java中的符号链接都指向正确的java安装

  5. 我在创建系统时没有安装任何’default’java

  6. java -version失败…与上面相同的错误

  7. 从java安装的目录结构下发出命令也不起作用

  8. 对于64位,这是64位java

有任何想法吗?

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

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

在JDK文件夹中*.pack jre/libjre/lib/ext *.pack文件,例如rt.pack (对于Microsoft Windows,默认位置为c:\nameof_jdk_folder\jre\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:

从目录"/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位架构,您必须同时安装32位版本和64位版本的jre(架构无关文件,因为rt.jar仅在32位版本中分发)。

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

不耐烦的人的快速解决方案 ;)在Windows机器上,尝试这样:转到C:\Windows\System32目录并删除java.exe (或将其重命名为类似java.exe.old )。

由于至少1.6,Windows目录中不应该有一个java.exe 。 如果有的话,这是一个遗留物。

更多阅读:

我真的很惊讶2012年的一个问题还没有得到批准的答案,我在2015年的Win 7 32位操作系统上遇到了同样的问题!

那发生了什么?

基本上,一切都工作正常,我下载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" 

解决方案:转到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/

您很可能在安装中缺少一个名为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 

我只想在这里分享我的工作解决方案。

当我进入jdk\bin文件夹时,Java运行正常,所以我知道它是PATH 。 我将PATH设置为CMD上的\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)不会自动解包(因此,您可以找到rt.pack文件等,而不是.jar文件)。

在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工作正常。

转到系统管理面板上的环境变量,从PATH中删除链接C:\ProgramData\Oracle\Java\javapath ,并确保在PATH中设置指向C:\Program Files\Java Folder\bin

之后,检查C:\Windows\System32存在java.exe文件; 如果为true,则删除该文件。

现在输入java -version它运行正常。

我最近遇到了同样的问题。 在我的情况下,我的Windows 7机器自动下载了Java并将C:\ProgramData\Oracle\Java\javapath到我的路径环境变量的开头,这搞砸了我的java。 一旦我从路径中摆脱了它,它就起作用了。

如果你在java二进制文件上执行“chmod u + rx”并运行它,它将解压缩jar文件并且你可以在没有运行时错误的情况下执行java -version

你不能只安装64位,你必须先安装32位然后添加64位组件。

来自java.com:

在允许32位JVM的64位系统上安装JRE的过程分为两步:首先安装32位JRE,然后安装额外的64位操作支持。 文件名如下:

如果在未先安装32位的情况下安装64位版本,则尽管修复了所有其他问题,仍会发生此错误。 我有一台运行Java 8u71的全新戴尔i7 64位Windows 10 Pro机器。 将我的%path%和%classpath%添加到环境变量并尝试其他几个修复程序后,卸载64位,安装32位然后重新安装64位修复它。

一些问题,例如没有解压缩文件等等​​,可能仍然会引起问题,但如果你不这样做,其他修复也行不通。

在我的情况下,我使用的是Windows 8.1(安装了jdk1.8.0_77),我做了三件事:

  1. 我删除了以前的jdks
  2. 我在C:\ Windows \ System32中重命名了java.exe文件
  3. 我还删除了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 deps中。

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。 它只是解决了我的问题。 (安装jdk后,SonarQube启动批处理开始出现此错误)

转到控制面板,卸载java相关的东西(如果打开则关闭eclipse),然后重新安装java并打开eclipse,清理项目。

刚刚在Solaris上做到这一点并遇到了同样的问题,甚至“java -version”都不起作用。 有一个原因是64位版本的发行版比32位小。 确实如上所述:

换句话说,要获得完全可用的64位安装,必须首先运行32位安装,如果您有64位安装机器,请使用64位安装进行后续操作…

所以我运行了32位的安装程序:

sh jdk-6u131-solaris-sparc.sh

然后我运行了64位的安装程序:

sh jdk-6u131-solaris-sparcv9.sh

这给了我几个java可执行文件可供选择:

  • $ find。 -name 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位服务器VM(内置20.131-b32,混合模式)

-担

在窗口10中,env中已存在路径为C:\>ProgramData\Oracle\Java\javapath ,其中包含符号链接到可执行文件。

当我安装新版本并从我的环境变量中删除它时,我的所有项目都开始显示它。

我在窗口10中使用日食氧气

解决它: –

  1. 我只是从环境变量中删除了路径C:\>ProgramData\Oracle\Java\javapath ,并在路径中添加了新的env作为JAVA_HOME和%JAVA_HOME%/ bin

  2. 我用admin权限重新安装jdk(删除以前的JRE文件夹)

  3. 打开你的eclipse项目>右键单击> Goto Proprieties> In Libraries>现在删除JRE系统库>单击Add Library>选择“JRE System Library”>单击Next>选择“Workspace default JRE(jre1.8.x_xxx)”>完

我的问题已经解决:)希望它会帮助你:)

这解决了我在CentOS上遇到的问题

 sudo yum install java-1.8.0-openjdk-devel 

另见在CentOS 6中设置JAVA_HOME和CLASSPATH

所以,我继续尝试一切,最后似乎卸载后重新安装java修复了我的问题。

我遇到了同样的问题:在VM java / lang / NoClassDefFoundError初始化期间发生错误:java / lang / Object

请按照以下步骤解决问题:

步骤1.转到C:\ Program Files \并搜索Java文件夹。

步骤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:打开命令提示符并输入java -version。

有用。

我遇到同样的问题,我安装了两个java版本,因此导致了这个问题。 确认这一点然后单击控制面板中的java图标如果没有打开那么问题是一样的,只需去卸载一个版本即可。 小菜一碟。 谢谢。

在Windows上,这对我有用

 C:\jdk-8u162-windows-x64\jre\lib>..\..\bin\unpack200 -r -v rt.pack rt.jar