itsource

JRE 1.7 - Java 버전 - 반환: java/lang/NoClassDefFoundError: java/lang/Object

mycopycode 2022. 9. 29. 00:18
반응형

JRE 1.7 - Java 버전 - 반환: java/lang/NoClassDefFoundError: java/lang/Object

Java 애플리케이션 또는 'java'만 실행하면 jvm이 실패합니다.

VM 초기화 중 오류가 발생했습니다.
java/lang/NoClassDefFoundError: java/lang/object

다음은 오답 목록입니다.

  1. /bin 디렉토리를 포함한 올바른 Java 홈 디렉토리가 글로벌 PATH에 있습니다.

  2. JAVA_HOME이 올바르게 설정되어 있다.

  3. java - fullversion 명령을 실행하면 동작합니다.

    $ java -fullversion
    
    ./java full version "1.7.0_05-b05"
    
  4. /usr/java의 심볼릭 링크는 모두 올바른 Java 설치를 가리키고 있습니다.

  5. 시스템 생성 시 기본 Java를 설치하지 않았습니다.

  6. java -version실패...위와 같은 오류

  7. Java 설치 디렉토리 구조에서 명령어를 발행해도 동작하지 않습니다.

  8. 이것은 64비트용 64비트 Java입니다.

좋은 생각 있어요?

이 문제는 Java 설치가 잘못되었기 때문에 발생합니다.

가능성 1

메모: 이 시나리오는 Java 8 이전 버전에만 적용됩니다.Java 9부터 JRE는 다른 구조로 되어 있습니다.rt.jar 및 friends는 존재하지 않으며 Pack200은 사용되지 않습니다.

Java 표준 라이브러리는 다음과 같은 다양한 JAR에 포함되어 있습니다.rt.jar,deploy.jar,jsse.jarJRE를 패키징할 때 이러한 중요한 JAR 파일은 Pack200으로 압축되어 다음과 같이 저장됩니다.rt.pack,deploy.pack,jsse.pack, 등. Java instra는 압축을 풀어야 합니다.이 에러가 발생하고 있는 경우는, 확실히 발생하지 않았습니다.

모두 수동으로 실행해야 합니다..packJRE의 파일lib/그리고.lib/ext/폴더.

창문들

짐을 풀다.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.gzJava 패키지 대신.

*nix OS에서 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수정하고 있는 JRE가 부속되어 있습니다.즉, 명령줄에서 다음 명령을 사용합니다.../../bin/unpack200(저에게 있어서, 이것은/usr/java/jdk1.8.0_05/bin/unpack200뿐만 아니라unpack200.

64비트 아키텍처의 경우 32비트 버전과 64비트 버전의 jre를 모두 설치해야 합니다(rt.jar로서 아키텍처에 의존하지 않는 파일은 32비트 버전에서만 배포됩니다).

글로벌 PATH 환경변수에 올바른 Java 실행파일을 포함하도록 주의해 주십시오.

성급한 사용자를 위한 빠른 솔루션 ;) Windows 머신에서는 다음을 시도해 보십시오.C:\Windows\System32디렉토리 및 삭제java.exe(또는 다음과 같은 이름으로 변경)java.exe.old).

적어도 1.6은 있기 때문에java.exeWindows 디렉토리에 있습니다.만약 있다면, 그것은 무엇인가에서 남은 것입니다.

조금 더 읽기:

2012년의 질문에 아직 승인된 답변이 없다는 사실에 매우 놀랐습니다.또한 2015년에도 Windows 7 32비트 OS에서 같은 문제가 발생했습니다.

그래서 어떻게 됐어?

기본적으로 모든 것이 잘 작동하고 있었고, 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/로 이동합니다.

오늘(1.8.0.73)에 새로운 JDK를 다운로드했습니다.c:> java.exe악명을 떨쳤죠

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

여기에서는, 운용상의 솔루션을 소개하고 싶었어요.

내가 CD에 들어갔을 때jdk\bin폴더, Java는 정상적으로 실행되기 때문에 나는 그것이 그 폴더라는 것을 알았다.PATH세팅했습니다.PATH딱 맞게\jdk\binCMD에서 증명했고 효과가 있었습니다.

이 폴더 중 하나는PATH가지고 있었을 것이다java.exe그게 갈등의 원인이라고 생각했어요.알고 보니, 그것은이었다.C:\>ProgramData\Oracle\Java\javapath실행 파일에 대한 심볼링크를 보관합니다.

java.exe가리키고 있었다jre\bin파일을 시작할 때 파일이 손상되었습니다.\jre\bin\java.exe--똑같은 에러입니다.네, JRE를 다시 설치했더니 문제가 사라졌어요.해피 코딩...

설치 환경에 java.lang 클래스 파일이 있는 rt.jar라는 파일이 없을 수 있습니다.오브젝트. 설치 파일 등을 확인합니다.

특히 64비트 인트라설러는 기존 32비트 설치를 오버레이(또는 "옆에" 설치)한다는 점에 유의하십시오.즉, 64비트 설치가 완전히 작동하려면 먼저 32비트 설치를 실행하고 64비트 지원 머신이 있는 경우 64비트 설치를 수행해야 합니다.

대신 64비트 설치만 수행하면 설치에서 특정 파일이 누락되어 위와 같은 오류가 발생합니다.

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\javapathPATH에 링크가 설정되어 있는 것을 확인해 주세요.C:\Program Files\Java Folder\bin.

그 후 체크인을 합니다.C:\Windows\System32존재하다java.exefile. true일 경우 해당 파일을 삭제합니다.

지금 입력 중java -version정상적으로 동작합니다.

이 문제는 다음에 의해 JDK를 설치할 때 발생합니다._uncompressing_대신에_executing_바로 그거에요.

예:

unzip jdk-6u45-linux-x64.bin  (wrong)

sh ./jdk-6u45-linux-x64.bin   (right)

첫 번째 시나리오에서는 런타임 라이브러리는 rt.jar로 자동으로 저장되지 않습니다(따라서 .jar 파일 대신 rt.pack 파일 등을 찾을 수 있습니다).

저도 최근에 같은 문제가 있었어요.제 경우 Windows 7 머신이 자동으로 Java를 다운로드하여 추가했습니다.C:\ProgramData\Oracle\Java\javapathpath 환경변수의 선두로 이동합니다.이 때문에 자바가 엉망이 되었습니다.그걸 길에서 없애버리자 효과가 있었어

자바 바이너리에서 "chmod u+mod"를 실행하여 실행하면 jar 파일이 언팩되고 런타임 오류 없이 Java 버전을 실행할 수 있습니다.

64비트만 설치할 수는 없습니다. 먼저 32비트를 설치한 다음 64비트 구성 요소를 추가해야 합니다.

java.com 에서 :

32비트 JVM을 지원하는 64비트 시스템에 JRE를 설치하는 과정은 두 단계로 이루어집니다. 먼저 32비트 JRE를 설치한 후 64비트 작업에 대한 추가 지원을 설치합니다.파일명은 다음과 같습니다.

먼저 32비트를 설치하지 않고 64비트 버전을 설치하면 다른 모든 문제를 해결했음에도 불구하고 이 오류가 발생합니다.Java 8u71을 실행하고 있는 새로운 Dell i7 64비트 Windows 10 Pro 머신을 사용하고 있습니다.환경변수에 %path%와 %classpath%를 추가하고 다른 몇 가지 수정을 시도한 후 64비트를 제거하고 32비트를 설치한 후 64비트를 다시 설치했습니다.

파일을 압축 해제하지 않는 등의 문제에서도 문제가 발생할 수 있지만, 그렇지 않으면 다른 수정도 작동하지 않습니다.

제 경우 Windows 8.1(설치된 jdk1.8.0_77)을 사용하여 다음 세 가지 작업을 수행했습니다.

  1. 이전 jdks를 삭제했습니다.
  2. C: 내의 java.exe 파일의 이름을 변경했습니다.\Windows\System32
  3. PATH에서 C:\ProgramData\Oracle\Java\javapath도 삭제했습니다(에코 %PATH %)

그리고 voila가 고쳤어!

같은 문제에 직면하여 프로그램 데이터 내의 심볼링크가 있음을 알게 되었습니다(C:\ProgramData\Oracle\Java\javapath)가 잘못되었습니다.나는 올바른 길을 제시했고 효과가 있었다.

프로그램 데이터를 수정하는 방법에 대한 자세한 내용은 여기를 참조하십시오.

Linux의 경우 대신 tar.gz 파일을 사용하는 방법도 있습니다.Solaris 플랫폼에도 이와 같은 기능이 있는 것 같습니다.이렇게 하면 모든 파일이 이미 예상된 형식이며 압축 해제 문제가 발생하지 않습니다.

JDK 1.7.0_40 i586을 사용한 x86_64 Linux 설치에서 문제가 발생했습니다.문제는 Rigg802에서 언급한 바와 같이 rpm이 jar 파일을 언팩할 수 없다는 것입니다(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는 jdk rpm의 rpm deps에 속하지 않는 glibc-2.12-1.1194.el6_4.4.i686에 의해 제공됩니다.

Oracle JDK rpm을 설치하려면 libgcc-4.4.7-3.el6.i686의 32비트 버전도 필요합니다.

따라서 회피책은 먼저 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를 다운로드하여 이 파일의 내용을 추출했습니다.기타 : 내보내기 JAVA_HOME=/opt/java/jdk1.7.0_79 내보내기 JDK_HOME=/opt/java/jdk1.7.0_79 내보내기 PATH=${JAVA_홈}/빈

jre를 다시 설치합니다.그것은 내 문제를 간단히 해결했다.(jdk 설치 후 SonarQube 스타트업 배치가 이 오류를 나타내기 시작했습니다.)

제어판으로 이동하여 Java 관련 항목을 제거한 후(열린 경우 이클립스 닫기), Java를 다시 설치하고 이클립스 및 클린 프로젝트를 엽니다.

Solaris에서 이 작업을 수행했는데 동일한 문제에 직면했습니다.이 문제에서는 "java - version"도 동작하지 않습니다.64비트 버전의 distro가 32비트보다 작은 이유가 있습니다.실제로 위와 같습니다.

In other words, to get a fully working 64-bit installation, you must first run the 32-bit installation, and follow that up with a 64-bit installation if you have a 64bit capable machine...

So I ran the installer for the 32-bit:

sh jdk-6u131-solaris-sparc.sh

Then I ran the installer for the 64-bit:

sh jdk-6u131-solaris-sparcv9.sh

This gives me several java executables to choose from:

  • $ 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

The sparcv9 java's are the 64bit versions and they work with "-version" when installed alongside the 32bit JDK.

  • ./jdk1.6.0_131/bin/sparcv9/java -version
  • java version "1.6.0_131"
  • Java(TM) SE Runtime Environment (build 1.6.0_131-b32)
  • Java HotSpot(TM) 64-Bit Server VM (build 20.131-b32, mixed mode)

-Dan

In window 10 there is already a path present in env as C:\>ProgramData\Oracle\Java\javapath that holds symlinks to the executables.

When I install a new version and remove that from my environment variable, my all project start showing it.

I am using eclipse oxygen in window 10

To resolve it:-

  1. I just remove path C:\>ProgramData\Oracle\Java\javapath from environment variable and added new env as JAVA_HOME and %JAVA_HOME%/bin in path

  2. I reinstall the jdk with admin privileges (delete the previous JRE folder)

  3. Open your eclipse project > right click > Goto Proprieties> In Libraries > Now remove JRE System Library > Click on Add Library > select "JRE System Library" > Click on Next > Select "Workspace default JRE(jre1.8.x_xxx)" > finish

My issue is resolved :) Hope it will help you :)

This fixed the problem I had on CentOS

sudo yum install java-1.8.0-openjdk-devel

also see setting JAVA_HOME & CLASSPATH in CentOS 6

So, I went on trying everything and at last it seems that reinstalling java after uninstalling it fixed my problem.

if any problem for JAVA installation version

C:\Where JAVA

will give the location of java it picking up. If you have any path other than your installation, remove those files or rename it (may be as _backup). you will get proper version of java file.

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

저는 같은 문제에 직면했고, 2개의 Java 버전을 설치했기 때문에 이 문제가 발생하였습니다.이것을 확인하려면 , 제어판의 java 아이콘을 클릭해 주세요.열리지 않는 경우는, 같은 문제가 됩니다.버전을 1개만 제거하면 됩니다.식은 죽 먹기지.감사합니다.

저도 같은 문제에 직면해 있었습니다.VM java/lang/NoClassDefFoundError: java/lang/Object 초기화 중 오류가 발생했습니다.

문제를 해결하려면 , 다음의 순서에 따릅니다.

스텝 1. Goto 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_를 설정합니다.홈: "C:\Program Files\Java\jdk1.8.0_91"

스텝 6: 명령 프롬프트를 열고 java - version을 입력합니다.

그건 효과가 있다.

언급URL : https://stackoverflow.com/questions/11808829/jre-1-7-java-version-returns-java-lang-noclassdeffounderror-java-lang-obje

반응형