Pertanyaan Cara memperbaiki java.lang.UnsupportedClassVersionError: Versi major.minor tidak didukung


Saya mencoba menggunakannya Notepad ++ sebagai alat edit all-in-one saya, jalankan, kompilasi, dll.

saya sudah JRE terinstal, dan saya telah mengatur variabel jalur saya ke ... / direktori bin.

Ketika saya menjalankan "Halo dunia" saya di Notepad ++, saya mendapatkan pesan ini:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

Saya pikir masalahnya di sini adalah tentang versi; beberapa versi Java mungkin sudah lama atau terlalu baru.

  1. Bagaimana saya memperbaikinya?
  2. Haruskah saya menginstal JDK, dan mengatur variabel jalur saya ke JDK daripada JRE?
  3. Apa perbedaan antara PATH variabel dalam JRE atau JDK?

1384
2018-04-30 11:28


asal


Jawaban:


Nomor versi yang ditampilkan menggambarkan versi JRE file kelas yang kompatibel dengan.

Angka-angka utama yang dilaporkan adalah:

Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

(Sumber: Wikipedia)

Untuk memperbaiki masalah yang sebenarnya Anda harus mencoba untuk menjalankan kode Java dengan Java JRE versi yang lebih baru atau menentukan parameter target ke compiler Java untuk menginstruksikan compiler untuk membuat kode yang kompatibel dengan versi Java sebelumnya.

Misalnya, untuk menghasilkan file kelas yang kompatibel dengan Java 1.4, gunakan baris perintah berikut:

javac -target 1.4 HelloWorld.java

Dengan versi yang lebih baru dari compiler Java Anda mungkin akan mendapatkan peringatan tentang jalur kelas bootstrap yang tidak diatur. Informasi lebih lanjut tentang kesalahan ini tersedia di posting blog Peringatan javac baru untuk menetapkan sumber yang lebih lama tanpa bootclasspath.


1773
2017-07-11 11:59



java.lang.UnsupportedClassVersionError terjadi karena JDK yang lebih tinggi selama waktu kompilasi dan JDK yang lebih rendah selama waktu proses.


328
2018-06-28 06:48



Di Eclipse, saya hanya pergi ke perintah menu Jendela -> Preferensi -> Jawa -> Penyusun dan kemudian menetapkan "Tingkat kepatuhan kompilator" menjadi 1,6.


111
2018-05-02 18:58



Jangan khawatir, saya sudah menyelesaikannya.

Ini sebenarnya sederhana - Anda perlu menginstal BOTH JRE / JDK dengan versi yang sama.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

Dan seterusnya.


55
2018-05-04 06:23



Kesalahan ini berarti Anda mencoba memuat file "kelas" Java yang dikompilasi dengan Java versi yang lebih baru daripada yang Anda instal.

Misalnya, Anda .class file dapat dikompilasi untuk JDK 7, dan Anda mencoba untuk menjalankannya dengan JDK 6.

Jadi solusinya adalah:

  • Tingkatkan Java runtime Anda atau
  • Mengkompilasi ulang kelas jika Anda memiliki sumber, menggunakan compiler Java lokal Anda (jika Anda memilikinya).

    javac FileName.java

Untuk pengembang, ini dapat terjadi jika pengembang lain memeriksa dalam file .class, dan mereka memiliki versi java yang lebih baru dari yang Anda miliki!


37
2018-02-20 19:02



Anda mencoba menjalankan program Anda dengan versi Java yang tidak mendukung versi di mana kode dikompilasi. Jadi pada dasarnya Anda harus mengkompilasi kode Anda dengan versi yang lebih tinggi dan mencoba menjalankannya menggunakan versi yang lebih rendah.

Seperti yang Anda dapatkan

Unsupported major.minor version 51.0

dan versi 51,0 sesuai dengan J2SE 7 Anda paling mungkin mengkompilasi kode Anda di Java 7 dan mencoba menjalankannya menggunakan versi yang lebih rendah. Periksa apa java -versionmenampilkan. Ini harus menjadi versi Java 7. Jika tidak melakukan perubahan yang sesuai di PATH / JAVA_HOME. Atau Anda dapat mengkompilasi dengan versi yang sama yang Anda coba jalankan kode. Jika konfigurasi membingungkan Anda selalu dapat memberikan jalur absolut /home/user/jdk1.7.0_11/bin/javac dan /home/user/jdk1.7.0_11/bin/java.


20
2017-10-01 08:51



Saya memiliki situasi serupa di Mac, dan proses berikut berhasil untuk saya:

Di terminal, ketik

vi ~/.profile

Kemudian tambahkan baris ini dalam file, dan simpan

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

di mana versi yang ada di komputer Anda, seperti 1.7.0_25.

Keluar dari editor, lalu ketik perintah berikut membuatnya menjadi efektif

source ~/.profile 

Kemudian ketik java -version untuk memeriksa hasilnya

java -version 

apa yang .profile mengajukan?

File .profile adalah file tersembunyi. Ini adalah file opsional yang memberitahu sistem yang perintah untuk dijalankan ketika pengguna yang file profilnya masuk. Sebagai contoh, jika nama pengguna saya adalah bruno dan ada file .profile di / Pengguna / bruno /, semua isinya akan dieksekusi selama prosedur log-in.

Sumber: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515


17
2018-02-11 06:55



Dalam menu Eclipse Jendela -> Preferensi -> Jawa -> Penyusun periksa juga "Konfigurasi Pengaturan Khusus Proyek".

Jika Anda masih memiliki kesalahan dengan versi Java yang sama: coba hapus folder build proyek Anda secara manual. Kemudian restart Eclipse.


15
2017-08-06 10:24



Anda dapat memiliki beberapa koleksi JAR yang dikompilasi di Java 7, dan Anda hanya memiliki Java 6 sebagai Java Runtime. Itu bisa terjadi dengan beberapa pustaka baru.


13
2018-06-25 12:51



Masalah paling umum adalah kesalahan konfigurasi Anda JAVA_HOME variabel yang harus mengarah ke pustaka Java Development Kit yang tepat, jika Anda telah menginstal beberapa kali.

Untuk menemukan di mana folder Java SDK berada, jalankan perintah berikut:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian / Ubuntu

Untuk memeriksa java (openjdk) yang telah Anda instal, periksa melalui:

dpkg -l "openjdk*" | grep ^i

atau:

update-java-alternatives -l

Untuk mengubahnya, gunakan:

update-alternatives --config java

Awalan dengan sudo jika diperlukan.

untuk memilih versi java alternatif.

Atau periksa yang tersedia untuk dipasang:

apt-cache search ^openjdk

Awalan dengan sudo jika diperlukan.

Kemudian Anda dapat menginstal, misalnya:

apt-get install openjdk-7-jre

Awalan dengan sudo jika diperlukan.

Fedora, Oracle Linux, Red Hat

Instal / perbarui paket yang sesuai melalui:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

Itu java-1.7.0-openjdk paket hanya berisi Java Runtime Environment. Jika Anda ingin mengembangkan program Java kemudian instal java-1.7.0-openjdk-devel paket.

BSD

Ada paket OpenJDK 7 di koleksi FreeBSD Ports yang disebut openjdk7 yang mungkin perlu dikonfigurasikan ulang.

Lihat: Halaman wiki OpenJDK.

Windows

Cukup instal library Java SE Development Kit yang sesuai dari Situs Oracle atau instal

Jenkins

Jika Anda mengalami masalah ini dengan Jenkins, lihat:

Namun memilih versi Java yang benar (yang lebih baru) dengan update-alternatives harus bekerja.


13
2018-04-04 12:16