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

时间:2012-08-04 12:52:39

标签: java

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

  

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

以下是错误的答案列表:

  1. 正确的Java主目录,包括/ bin目录,位于全局路径

  2. JAVA_HOME设置正确

  3. 执行命令java -fullversion工作

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

  5. 我在创建系统

  6. 时没有安装任何'默认'java
  7. java -version失败...与上述相同的错误

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

  9. 对于64位

  10. ,这是64位java

    有什么想法吗?

29 个答案:

答案 0 :(得分:176)

此问题源于不正确的Java安装。

可能性1

  

注意:此方案仅适用于Java 8及更早版本。从Java 9开始,JRE的结构不同。 rt.jar和朋友不再存在,并且不再使用Pack200。

Java标准库包含在各种JAR中,例如rt.jardeploy.jarjsse.jar等。打包JRE时,这些关键的JAR文件使用{{ 3}}并存储为rt.packdeploy.packjsse.pack等.Java安装程序应该解压缩它们。如果您遇到此错误,显然没有发生。

您需要在JRE的.packlib/文件夹中的所有lib/ext/个文件上手动运行Pack200

要解压缩一个.pack文件(例如rt.pack),请运行:

"%JAVA_HOME%\bin\unpack200" -r -v rt.pack rt.jar

以递归方式解压缩所有.pack文件,来自JRE根运行:

for /r %f in (*.pack) do "%JAVA_HOME%\bin\unpack200.exe" -r -q "%f" "%~pf%~nf.jar"

* nix中

要解压缩一个.pack文件(例如rt.pack),请运行:

/usr/bin/unpack200 -r -v rt.pack rt.jar

以递归方式解压缩所有.pack文件,来自JRE根运行:

find -iname "*.pack" -exec sh -c "/usr/bin/unpack200 -r -q {} \$(echo {} | sed 's/\(.*\.\)pack/\1jar/')" \;

可能性2

您以其他方式错误地安装了Java。也许您安装时没有管理员权限,或者试图简单地从安装程序中提取文件。请使用安装程序和/或更多权限重试。或者,如果您不想使用安装程序,请改用.tar.gz Java包。

答案 1 :(得分:22)

对于* nix操作系统上的Java 8,请转到<jdk 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

要防止在安装了其他JRE的情况下出现版本问题,请使用您正在修复的JRE附带的unpack200 - 也就是说,从命令行使用../../bin/unpack200(对我来说,这会扩展为/usr/java/jdk1.8.0_05/bin/unpack200),而不只是unpack200

答案 2 :(得分:12)

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

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

答案 3 :(得分:11)

对于不耐烦的人

快速解决方案;)在 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/

答案 4 :(得分:10)

我今天下载了新的JDK(1.8.0.73)c:> java.exe并且臭名昭着:

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

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

当我进入jdk\bin文件夹时,Java会正常运行,所以我知道它是PATH。我在CMD将PATH设置为\jdk\bin以证明它并且有效。

所以,我想,PATH中的一个文件夹必须有java.exe导致冲突。事实证明,C:\>ProgramData\Oracle\Java\javapath符号链接保存到可执行文件中。

java.exe指向jre\bin。当我开始\jre\bin\java.exe时,文件已损坏 - 完全相同的错误。答对了。我重新安装了JRE,问题就消失了。快乐的编码...

答案 5 :(得分:8)

您很可能在安装中缺少一个名为rt.jar的文件,该文件包含java.lang.Object的类文件。检查您的安装文件等。

请特别注意,64位intsaller覆盖(或安装“旁边”)现有的32位安装。换句话说,要获得完全正常工作的64位安装,必须首先运行32位安装,如果您有64位安装机器,则必须使用64位安装...

如果您只进行64位安装,则会丢失安装中的某些文件,并且会出现上述错误。

答案 6 :(得分:5)

在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一切正常。

答案 7 :(得分:5)

当您通过@Query("OPTIONAL MATCH (child)-[r:RELATION]->(parent) " + "WITH (CASE WHEN id(parent)={0} AND r IS NOT NULL " + "AND (r.type='BIOLOGICAL_MOTHER' OR r.type='BIOLOGICAL_FATHER') THEN true ELSE false END) as check " + "RETURN ANY (x in collect(check) WHERE x=true) ") boolean isParentRole(long id); 而不是_uncompressing_安装JDK时会发生此问题。

以示例:

_executing_

在第一个场景中,运行时库(如rt.jar)不会自动解包(因此,您可以找到rt.pack文件等,而不是.jar文件等。)

答案 8 :(得分:4)

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

答案 9 :(得分:3)

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

答案 10 :(得分:3)

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

来自java.com:

  

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

答案 11 :(得分:1)

我遇到了类似的问题,发现程序数据中的符号链接(C:\ ProgramData \ Oracle \ Java \ javapath)是错误的。我已经给出了正确的路径并且有效。

Details on how to correct the program data is available here

答案 12 :(得分:1)

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

  1. 我删除了之前的jdks
  2. 我在C:\ Windows \ System32
  3. 中重命名了java.exe文件
  4. 我还删除了PATH中的C:\ ProgramData \ Oracle \ Java \ javapath(echo%PATH%)
  5. 并且瞧瞧了!

答案 13 :(得分:1)

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

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

答案 14 :(得分:0)

我发现在解压缩.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

答案 15 :(得分:0)

另一个答案可能是在Linux案例中使用tar.gz文件。对于solaris平台似乎也有类似的东西。这样,所有文件都将采用预期的格式,并且不会出现任何解包问题。

答案 16 :(得分:0)

快速修复对我有用:

for file in $(find "$JAVA_HOME" -name "*pack")
do 
    unpack200 "${file}" "${test_file/%pack/jar}";
done

答案 17 :(得分:0)

只需再次安装jre 即可。它只是解决了我的问题。 (安装jdk后,SonarQube启动批处理开始出现此错误)

答案 18 :(得分:0)

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

答案 19 :(得分:0)

在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 /分贝/演示/方案/分数/ JAVA
  • ./ jdk1.6.0_131 /分贝/演示/方案/ 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,混合模式)

-Dan

答案 20 :(得分:0)

我在使用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。

答案 21 :(得分:0)

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

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

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

解决它: -

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

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

  3. 打开你的eclipse项目&gt;右键单击&gt; Goto Proprieties&gt;在图书馆中&gt;现在删除JRE系统库&gt;点击添加库&gt;选择“JRE系统库”&gt;点击下一步&gt;选择“工作区默认JRE(jre1.8.x_xxx)”&gt;光洁度
  4. 我的问题已解决:) 希望它能帮助你:))

答案 22 :(得分:0)

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

sudo yum install java-1.8.0-openjdk-devel

另见setting JAVA_HOME & CLASSPATH in CentOS 6

答案 23 :(得分:0)

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

答案 24 :(得分:0)

如果JAVA安装版本有任何问题

C:\ JAVA哪里

将给出它拾取的java的位置。如果您的安装路径以外的其他路径,请删除这些文件或将其重命名(可能是_backup)。您将获得正确版本的Java文件。

答案 25 :(得分:0)

我在 Redhat Linux 7 中遇到了同样的问题。这已通过删除、安装以下 RPM 并重新加载终端来解决。

java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64 
java-1.8.0-openjdk-devel-1.8.0.232.b09-0.el7_7.x86_64
java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64

答案 26 :(得分:-1)

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

答案 27 :(得分:-1)

在Windows上这对我有用

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

答案 28 :(得分:-2)

我遇到了同样的问题: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设置为&#34; C:\ Program Files \ Java \ jdk1.8.0_91&#34;

步骤6:打开命令提示符并输入java -version。

有效。