JRE 1.7 - เวอร์ชัน java - ส่งคืน: java / lang / NoClassDefFoundError: java / lang / Object


137

เมื่อเรียกใช้แอปพลิเคชัน 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. ฉันไม่ได้ติดตั้งจาวา 'ค่าเริ่มต้น' ใด ๆ เมื่อฉันสร้างระบบ

  6. java -version ล้มเหลว ... ข้อผิดพลาดเดียวกันกับด้านบน

  7. การออกคำสั่งจากภายใต้โครงสร้างไดเร็กทอรีของการติดตั้ง java ไม่ได้ผลเช่นกัน

  8. นี่คือจาวา 64 บิตสำหรับ 64 บิต

ความคิดใด ๆ ?


2
ดูเหมือนว่ามีปัญหาในการโหลดrt.jarไฟล์ซึ่งจำเป็นต้องใช้JVMในขณะที่โหลดJRE
Bhavik Ambani

อาจมีปัญหาที่เกี่ยวข้องกับการอนุญาต?
Mark Bramnik

เรียกใช้ truss / strace เพื่อดูไฟล์ที่ขาดหายไป / สิทธิ์ของไฟล์
Jayan

inbytebg.com/techblog/?p=189ในความคิดเห็นแรกมีเคล็ดลับ hex ในการแก้ไขโปรแกรมติดตั้ง
Sebastian

คำตอบ:


187

ปัญหานี้เกิดจากการติดตั้ง Java ที่ไม่เหมาะสม

ความเป็นไปได้ 1

หมายเหตุ:สถานการณ์นี้ใช้กับ Java 8 และรุ่นก่อนหน้าเท่านั้น เริ่มต้นด้วย Java 9 JRE มีโครงสร้างที่แตกต่างกัน rt.jar และผองเพื่อนไม่มีอยู่แล้วและไม่มีการใช้ Pack200 อีกต่อไป

มาตรฐานห้องสมุด Java ที่มีอยู่ในไหต่างๆเช่นrt.jar, deploy.jar, jsse.jarฯลฯ เมื่อ JRE เป็นแพคเกจเหล่านี้ไฟล์ JAR ที่สำคัญจะถูกบีบอัดด้วยPack200และเก็บไว้เป็นrt.pack, deploy.pack, jsse.packติดตั้ง ฯลฯ Java ควรจะยกเลิกการบีบอัดพวกเขา หากคุณพบข้อผิดพลาดนี้ดูเหมือนว่าจะไม่เกิดขึ้น

คุณต้องเรียกใช้ไฟล์unpack200ทั้งหมด.packใน JRE lib/และlib/ext/โฟลเดอร์ด้วยตนเอง

Windows

ในการคลาย.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"

*ห้าม

ในการคลาย.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 แทน


2
นี่คือคำถาม Solaris ไม่ใช่ Windows
Robin Kanters

1
วิธีนี้ช่วยได้หากคุณเพิ่งดาวน์โหลดไฟล์ java linux archive และไม่ต้องการใช้สคริปต์การติดตั้ง
PotOfTea

23
@Robin Kanters เนื่องจากปัญหา / ข้อความแสดงข้อผิดพลาดที่แน่นอนอาการและวิธีการแก้ไขนั้นเป็นแพลตฟอร์มที่ไม่เชื่อเรื่องพระเจ้านี่เป็นคำถาม Java RE ไม่ใช่ Solaris

1
ยืนยันว่ามีปัญหานี้บน windows หลังจาก java ทำการอัปเดตอัตโนมัติ
Lassi Kinnunen

5
ฉันมักจะใช้for %i in (*.pack) do (..\bin\unpack200 "%i" "%~ni.jar" & del "%i")(บางทีสักวันฉันจะทำให้มันแข็งแกร่งขึ้นเล็กน้อยเพื่อที่ฉันจะได้ไม่ต้องเปลี่ยนเส้นทางด้วยตนเอง แต่แล้วอีกครั้งฉันมักจะใช้.gzJRE ซึ่งไม่ได้บรรจุไว้ )
Synetech

30

สำหรับ Java 8 บน * nix OS ไปที่<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 อื่นติดตั้งใช้งานเดียวกันunpack200ที่มาพร้อมกับ JRE ที่คุณกำลังตรึง - นั่นคือจากบรรทัดคำสั่งการใช้งาน../../bin/unpack200(สำหรับผมนี้จะขยายไปยัง/usr/java/jdk1.8.0_05/bin/unpack200) unpack200ไม่ได้เป็นเพียง


3
ในการพัฒนาคุณต้องแกะแพ็กเกจอื่น ๆ : "<jdk1.8_root>/lib" ../bin/unpack200 tools.pack tools.jarใน"<jdk1.8_root>/jre/lib/ext" ../../bin/unpack200 jfxrt.pack jfxrt.jar ../../bin/unpack200 localedata.pack localedata.jar
betontalpfa

สคริปต์บางส่วนสามารถพบได้ที่นี่เพื่อแกะขวดที่หายไปทั้งหมดจาก JDK ที่แยกออกมาด้วยตนเอง: stackoverflow.com/questions/2203922/…
Kloe2378231

นี่เป็นปัญหาในกรณีของฉัน ฉันใช้ Ubuntu 18.04 ขอบคุณ!
Boncho Valkov

13

ดูเหมือนว่าสำหรับสถาปัตยกรรม 64 บิตคุณต้องติดตั้งทั้งรุ่น 32 บิตและรุ่น 64 บิตของ jre (ไฟล์อิสระของสถาปัตยกรรมเป็น rt.jar จะแจกจ่ายในเวอร์ชัน 32 บิตเท่านั้น)

โปรดจำไว้ว่าให้ใส่ใจกับการรวมจาวาปฏิบัติการที่ถูกต้องบนตัวแปรสภาพแวดล้อม PATH ส่วนกลาง


3
คุณได้รับที่architecture independent files as rt.jar are distributed only in the 32-bin versionใด
Aleksandr M

ฉันเพิ่งตรวจสอบเนื้อหาของการแจกจ่าย
Tommaso

+1 ใช่คุณถูกต้อง rt.jar ไม่รวมอยู่ในแพ็คเกจ jre สำหรับ solaris 64-bit
Aleksandr M

3
เพื่อเพิ่มสิ่งนี้ - เราพบสิ่งนี้เมื่อทำการติดตั้งด้วยตนเองบน SmartOS ทำตามคำแนะนำที่blogs.oracle.com/thefield/entry/solaris_11_jdk_installation (ส่วนใหญ่) แล้วคุณจะโอเค
Khushil

ฉันติดตั้งทั้งสองแพ็คเกจ jdk-7u79-solaris-sparcv9.tar.Z และ jdk-7u79-solaris-sparc.tar.Z ตอนนี้ดูเหมือนมันจะทำงาน Ty.
Alex Pi

11

วิธีแก้ปัญหาด่วนสำหรับคนใจร้อน;) ในเครื่องWindowsให้ลองทำดังนี้: ไปที่C:\Windows\System32ไดเร็กทอรีและลบjava.exe(หรือเปลี่ยนชื่อเป็นสิ่งที่ต้องการjava.exe.old)

ตั้งแต่อย่างน้อย 1.6 จึงไม่ควรมีjava.exeอยู่ในไดเร็กทอรี Windows ถ้ามีมันเป็นของเหลือจากบางอย่าง

อ่านเพิ่มเติม:

ฉันแปลกใจจริงๆที่คำถามจากปี 2012 ยังไม่มีคำตอบที่ได้รับการอนุมัติและฉันก็พบปัญหาเดียวกันในปี 2015 ใน Win 7 32-Bit 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/


ฉันก็ประสบปัญหานี้เช่นกัน แต่ดูเหมือนว่าในกรณีของคุณคุณใช้ java เวอร์ชันเก่ากว่า 1.6.0_26! = 1.6.0_45 เวอร์ชันเก่าของคุณอาจไม่มีปัญหา
Centimane

เห็นดี! ฉันติดตั้ง JDK 1.6.0_26 แล้วและเวอร์ชัน "ใหม่กว่า" นั้นมาจากโฟลเดอร์ Windows System32 ทั้งสองอยู่ในตัวแปรสภาพแวดล้อม PATH และฉันไม่ต้องการใช้รันไทม์ java ที่ Windows ให้มา ดังนั้นการลบมันจะช่วยแก้ปัญหาได้ บางทีคุณอาจมี java runtimes สองครั้งใน PATH ของคุณด้วย?
iaforek

สำหรับฉันการติดตั้งของฉันไม่มี rt.jar (ซึ่งเป็นที่ที่คุณพบ java.lang.Object) น่าเสียดายที่เมื่อฉันติดตั้ง RPM จาก kickstart มันไม่มี rt.jar แต่ถ้าฉันติดตั้งหลังจากนั้นจะมีปัญหาตลก ๆ
Centimane

ฉันช่วยคุณเรื่อง RPM ไม่ได้ ขอโทษด้วยกับเรื่องนั้น.
iaforek

4
สำหรับฉันลิงก์สัญลักษณ์สำหรับ java in C:\ProgramData\Oracle\Java\javapathทำให้เกิดปัญหา ฉันเปลี่ยนตัวแปรสภาพแวดล้อม PATH และตอนนี้ใช้งานได้
WhiteKnight

10

ฉันดาวน์โหลด JDK ใหม่วันนี้ (1.8.0.73) เริ่มต้นc:> java.exeและได้รับความอับอาย:

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

ฉันแค่อยากจะแบ่งปันวิธีการทำงานของฉันที่นี่

เมื่อฉัน cd'ied ลงในjdk\binโฟลเดอร์ Java จะทำงานได้ดีดังนั้นฉันจึงรู้ว่ามันเป็นไฟล์PATH. ฉันตั้งค่าPATHเป็นเพียง\jdk\binที่ CMD เพื่อพิสูจน์ว่ามันใช้งานได้จริง

ดังนั้นหนึ่งในโฟลเดอร์ในไฟล์ PATHjava.exeฉันคิดว่าต้องมีซึ่งทำให้เกิดความขัดแย้ง ตามที่ปรากฎมันเป็นC:\>ProgramData\Oracle\Java\javapathที่เก็บsymlinkไปยังไฟล์ปฏิบัติการ

java.exejre\binถูกชี้ไปที่ ไฟล์เสียหายเมื่อฉันเริ่มต้น\jre\bin\java.exe- ข้อผิดพลาดเดียวกันแน่นอน บิงโก ฉันติดตั้ง JRE ใหม่และปัญหาก็หายไป มีความสุขในการเขียนโค้ด ...


8

คุณอาจไม่มีไฟล์ชื่อ rt.jar ในการติดตั้งของคุณซึ่งมีไฟล์คลาสสำหรับ java.lang.Object ตรวจสอบไฟล์ติดตั้งของคุณเป็นต้น

โดยเฉพาะอย่างยิ่งโปรดทราบว่าการวางซ้อน intsaller 64 บิต (หรือติดตั้ง "ถัดจาก") การติดตั้ง 32 บิตที่มีอยู่ กล่าวอีกนัยหนึ่งในการรับการติดตั้ง 64 บิตที่ทำงานได้อย่างสมบูรณ์ก่อนอื่นคุณต้องเรียกใช้การติดตั้ง 32 บิตและติดตามด้วยการติดตั้ง 64 บิตหากคุณมีเครื่องที่รองรับ 64 บิต ...

หากคุณทำการติดตั้งแบบ 64 บิตแทนคุณจะไม่มีไฟล์บางไฟล์ในการติดตั้งและจะได้รับข้อผิดพลาดเช่นไฟล์ด้านบน


มันเป็นส่วนหนึ่งของคำตอบ คุณต้องคลายไฟล์ * .pack ทั้งหมดภายในไดเร็กทอรี / lib และ lib / ext ของพา ธ java SDK ของคุณ unpack200 ช่วยคุณได้ในเรื่องนี้ โปรดดูความคิดเห็นของ Rigg802
อันตราย 89

7

ใน 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ไฟล์อยู่หรือไม่ ถ้าเป็นจริงให้ลบไฟล์นั้น

การพิมพ์ตอนนี้java -versionใช้งานได้ดี


2
ฉันมีปัญหาเดียวกันหลังจากที่ Windows Update C:\Program Files\Java Folder\binแต่ฉันไม่ได้มีโฟลเดอร์ ฉันใช้แทนC:\Program Files\Java\jdk1.8.0_161\binแต่มันก็ไม่ช่วยฉันอยู่ดี ไม่มีไฟล์ java.exe ในโฟลเดอร์ System32
Tom

6

ปัญหานี้เกิดขึ้นเมื่อคุณติดตั้ง JDK _uncompressing_แทน_executing_มัน

ตามตัวอย่าง:

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

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

ในสถานการณ์แรกไลบรารีรันไทม์ในฐานะ rt.jar จะไม่ถูกยกเลิกการคำนวณโดยอัตโนมัติ (ดังนั้นคุณสามารถค้นหาไฟล์ rt.pack ฯลฯ แทนที่จะเป็นไฟล์. jar)


4

ฉันมีปัญหาเดียวกันเมื่อเร็ว ๆ นี้ ในกรณีของฉันเครื่อง windows 7 ของฉันดาวน์โหลด java โดยอัตโนมัติและเพิ่มC:\ProgramData\Oracle\Java\javapathไปยังจุดเริ่มต้นของตัวแปรสภาพแวดล้อมเส้นทางของฉันซึ่งทำให้ java ของฉันยุ่ง เมื่อฉันกำจัดสิ่งนั้นออกจากเส้นทางมันก็ใช้ได้



3

คุณไม่สามารถติดตั้งได้เพียง 64 บิตคุณต้องติดตั้ง 32 บิตก่อนแล้วจึงเพิ่มส่วนประกอบ 64 บิต

จาก java.com:

การติดตั้ง JRE บนระบบ 64 บิตที่อนุญาต JVM แบบ 32 บิตเป็นกระบวนการสองขั้นตอนขั้นแรกให้ติดตั้ง JRE 32 บิตจากนั้นติดตั้งการสนับสนุนเพิ่มเติมสำหรับการดำเนินการ 64 บิต ชื่อไฟล์มีดังนี้:


OP ไม่ได้พูดถึงอะไรเกี่ยวกับการรัน JVM 32 บิตบนระบบ 64 บิต ... ?
wookie919

1

หากคุณติดตั้งเวอร์ชัน 64 บิตโดยไม่ได้ติดตั้ง 32 บิตก่อนข้อผิดพลาดนี้จะเกิดขึ้นแม้ว่าจะแก้ไขปัญหาอื่น ๆ ทั้งหมดแล้วก็ตาม ฉันมีเครื่อง Dell i7 64-bit Windows 10 Pro รุ่นใหม่ที่ใช้ Java 8u71 หลังจากเพิ่ม% path% และ% classpath% ของฉันลงในตัวแปรสภาพแวดล้อมแล้วลองแก้ไขอื่น ๆ อีกหลายอย่างถอนการติดตั้ง 64 บิตติดตั้ง 32 บิตจากนั้นติดตั้ง 64 บิตใหม่

ปัญหาบางอย่างเช่นไม่มีการคลายไฟล์ ฯลฯ ที่ถูกกล่าวถึงสาเหตุที่เป็นไปได้อาจยังคงทำให้เกิดปัญหา แต่ถ้าคุณไม่ทำเช่นนี้การแก้ไขอื่น ๆ จะไม่ได้ผล


1

ในกรณีของฉันฉันใช้ windows 8.1 (ติดตั้ง jdk1.8.0_77) ฉันทำสามสิ่ง:

  1. ฉันลบ jdks ก่อนหน้านี้
  2. ฉันเปลี่ยนชื่อไฟล์ java.exe ภายใน C: \ Windows \ System32
  3. ฉันยังลบ C: \ ProgramData \ Oracle \ Java \ javapath ใน PATH ของฉันด้วย (echo% PATH%)

และ voila ได้รับการแก้ไขแล้ว!


1

ฉันประสบปัญหาคล้ายกันนี้และพบว่า symlink ในข้อมูลโปรแกรม (C: \ ProgramData \ Oracle \ Java \ javapath) ผิด ฉันได้ให้เส้นทางที่ถูกต้องและได้ผล

ดูรายละเอียดวิธีการแก้ไขข้อมูลโปรแกรมได้ที่นี่


0

คำตอบอื่นอาจใช้ไฟล์ tar.gz แทนในกรณี Linux ดูเหมือนจะมีบางอย่างเช่นนั้นสำหรับแพลตฟอร์มโซลาริส วิธีนี้ไฟล์ทั้งหมดจะอยู่ในรูปแบบที่คาดไว้แล้วและจะไม่มีปัญหาในการคลายไฟล์


คุณหมายถึงอะไรใช้ไฟล์ tar.gz แทน
Koray Tugay

เมื่อพิจารณาว่าฉันตอบคำถามนี้เมื่อประมาณ 2.5 ปีที่แล้วฉันต้องย้อนกลับไปดูที่เว็บไซต์ดาวน์โหลด java คุณมีตัวเลือกในการดาวน์โหลด java ไม่ว่าจะเป็นแพ็กเกจเช่น. rpm สำหรับ LinuX ฉันคิดว่าฉันได้ลองทำมาก่อนและประสบปัญหา การดาวน์โหลดไฟล์ tar.gz แทนจะทำงานได้ดีกว่าเนื่องจากมีเนื้อหาทั้งหมดอยู่ในรูปแบบไฟล์ที่ต้องการ
Rythmic

0

ฉันมีปัญหาบางอย่างในการติดตั้ง x86_64 Linux ด้วย JDK 1.7.0_40 i586 ฉันพบว่าปัญหาคือ 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ซึ่งไม่ได้อยู่ใน rpm deps ของ jdk rpm

Oracle JDK rpm ยังต้องการ libgcc-4.4.7-3.el6 เวอร์ชัน 32 บิต i686ที่จะติดตั้ง

วิธีแก้ปัญหาคือติดตั้ง glibc-2.12-1.107.el6_4.4.i686 และ libgcc-4.4.7-3.el6.i686 ก่อน


ฉันมีปัญหาเดียวกันกับ Fedora 20 และติดตั้ง libgcc-4.8.2-7.fc20.i686 เพื่อแก้ปัญหา Txs
ไปป์

0

การแก้ไขด่วนที่ใช้ได้ผลสำหรับฉัน:

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

0

ฉันพบว่าข้อผิดพลาดนี้เกิดขึ้นเมื่อฉันแตกไฟล์. rpm

จากนั้นฉันลบโฟลเดอร์นั้นและดาวน์โหลด jdk-7u79-linux-x64.tar.gz สำหรับ Linux 64 และแตกเนื้อหาของไฟล์นี้แทน นอกจากนี้: ส่งออก JAVA_HOME = / opt / java / jdk1.7.0_79 ส่งออก JDK_HOME = / opt / java / jdk1.7.0_79 เส้นทางการส่งออก = $ {JAVA_HOME} / bin


0

เพียงแค่ติดตั้ง JRE อีกครั้ง มันช่วยแก้ปัญหาของฉันได้ (ชุดเริ่มต้น SonarQube เริ่มให้ข้อผิดพลาดนี้หลังจากที่ฉันติดตั้ง jdk)


0

ไปที่แผงควบคุมถอนการติดตั้งสิ่งที่เกี่ยวข้องกับ java (ปิด eclipse ถ้าเปิด) จากนั้นติดตั้ง java ใหม่และเปิด eclipse โปรเจ็กต์ใหม่ทั้งหมด


โหวตลง OP ไม่ได้อยู่บนแพลตฟอร์ม Windows อย่างชัดเจน
peterh

0

เพิ่งทำสิ่งนี้ใน Solaris และพบปัญหาเดียวกันนี้ซึ่งแม้แต่ "java -version" ก็ไม่ทำงาน มีเหตุผลที่รุ่น 64 บิตของ distro มีขนาดเล็กกว่า 32 บิต เป็นไปตามที่ระบุไว้ข้างต้น:

กล่าวอีกนัยหนึ่งในการรับการติดตั้ง 64 บิตที่ทำงานได้อย่างสมบูรณ์ก่อนอื่นคุณต้องเรียกใช้การติดตั้ง 32 บิตและติดตามด้วยการติดตั้ง 64 บิตหากคุณมีเครื่องที่รองรับ 64 บิต ...

ดังนั้นฉันจึงรันโปรแกรมติดตั้งสำหรับ 32 บิต:

sh jdk-6u131-solaris-sparc.sh

จากนั้นฉันรันโปรแกรมติดตั้งสำหรับ 64 บิต:

sh jdk-6u131-solaris-sparcv9.sh

สิ่งนี้ทำให้ฉันมีไฟล์ปฏิบัติการจาวาหลายตัวให้เลือก:

  • $ หา. - ชื่อ 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 บิตและทำงานร่วมกับ "-version" เมื่อติดตั้งควบคู่ไปกับ JDK 32 บิต

  • ./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-Bit Server VM (build 20.131-b32, mixed mode)

- แดน


จริง แต่คำถามคือตั้งแต่ปี 2012 และเราไม่รู้จักแพลตฟอร์มของ OP เขาอ้างถึง/usr/javaดังนั้นมันจึงชัดเจนว่าเป็น Linux / Unix เหมือนกับ OS คุณคิดถูกแล้วที่การติดตั้ง Solaris ของ Java นั้นแตกต่างจาก OS อื่น ๆ จนถึง Java8 คุณพื้นมีการติดตั้งแพคเกจแรก 32bit แล้วแพคเกจ 64 บิตบนของมัน แต่นั่นคือทั้งหมดที่ผ่านมาแล้วตอนนี้ Java 32 บิตไม่ได้รับการสนับสนุนบน Solaris อีกต่อไปเช่นเดียวกับ Mac OS X
peterh

0

ในหน้าต่าง 10 มีเส้นทางอยู่แล้วใน env เป็น C:\>ProgramData\Oracle\Java\javapathมี symlinks ไปยังไฟล์ปฏิบัติการ

เมื่อฉันติดตั้งเวอร์ชันใหม่และลบออกจากตัวแปรสภาพแวดล้อมของฉันโปรเจ็กต์ทั้งหมดของฉันจะเริ่มแสดง

ฉันใช้ออกซิเจนคราสในหน้าต่าง 10

วิธีแก้ไข: -

  1. ฉันเพิ่งลบพา ธ ออกC:\>ProgramData\Oracle\Java\javapathจากตัวแปรสภาพแวดล้อมและเพิ่ม env ใหม่เป็น JAVA_HOME และ% JAVA_HOME% / bin ในพา ธ

  2. ฉันติดตั้ง jdk ใหม่ด้วยสิทธิ์ผู้ดูแลระบบ (ลบโฟลเดอร์ JRE ก่อนหน้า)

  3. เปิดโปรเจ็กต์ eclipse ของคุณ> คลิกขวา> Goto Proprieties> ใน Libraries> ตอนนี้ลบ JRE System Library> คลิกที่ Add Library> เลือก "JRE System Library"> คลิกที่ถัดไป> เลือก "Workspace default JRE (jre1.8.x_xxx)"> เสร็จสิ้น

ปัญหาของฉันได้รับการแก้ไขแล้ว :) หวังว่ามันจะช่วยคุณได้ :)



0

ดังนั้นฉันจึงลองทุกอย่างและในที่สุดดูเหมือนว่าการติดตั้ง java ใหม่หลังจากถอนการติดตั้งมันช่วยแก้ปัญหาของฉันได้


0

หากมีปัญหาสำหรับเวอร์ชันการติดตั้ง JAVA

C: \ ที่ไหน JAVA

จะให้ตำแหน่งของ java ที่หยิบขึ้นมา หากคุณมีเส้นทางอื่นนอกเหนือจากการติดตั้งของคุณให้ลบไฟล์เหล่านั้นออกหรือเปลี่ยนชื่อ (อาจเป็น _backup) คุณจะได้รับไฟล์ java เวอร์ชันที่เหมาะสม


-1

ฉันประสบปัญหาเดียวกันฉันได้ติดตั้ง java สองเวอร์ชันจึงทำให้เกิดปัญหานี้ เพื่อยืนยันการไปนี้และคลิกไอคอน java ในแผงควบคุมหากไม่เปิดขึ้นแสดงว่าปัญหาเหมือนกันเพียงแค่ไปและถอนการติดตั้งหนึ่งเวอร์ชัน ชิ้นเค้ก ขอบคุณ.


-2

ฉันประสบปัญหาเดียวกัน: เกิดข้อผิดพลาดระหว่างการเริ่มต้น VM java / lang / NoClassDefFoundError: java / lang / Object

ทำตามขั้นตอนด้านล่างเพื่อแก้ไขปัญหา:

ขั้นตอนที่ 1. ไปที่ C: \ Program Files \ และค้นหาโฟลเดอร์ Java

ขั้นตอนที่ 2. ลบโฟลเดอร์ C: \ Program Files \ Java

ขั้นตอนที่ 3. ดาวน์โหลด Jdk ใหม่สำหรับเวอร์ชัน 32 บิต / 64 บิตของคุณจากhttp://www.oracle.com/technetwork/java/javase/downloads/index.html

ขั้นตอนที่ 4. ติดตั้ง JDK

ขั้นตอนที่ 5: ตั้งค่า JAVA_HOME เป็น "C: \ Program Files \ Java \ jdk1.8.0_91"

ขั้นตอนที่ 6: เปิดพรอมต์คำสั่งและป้อน java -version

มันได้ผล.


OP กล่าวว่า JAVA_HOME ไม่ใช่ปัญหาที่นี่
Alexandre Beaudet

ไม่จำเป็นต้องกำหนดค่า JAVA_HOME อีกครั้งหากตั้งค่าเป็นตำแหน่ง jdk แล้ว คุณสามารถข้ามขั้นตอนที่ 5 ได้เพียงแค่ลบ JDK รุ่นเก่าและติดตั้งอันใหม่กว่า
Mahesh Sutar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.