Tidak dapat mengubah versi utama file jar yang dapat dijalankan di gerhana

Saya menjalankan Eclipse Luna Service Rilis 2 (4.4.2). Untuk proyek Java saya tidak dapat menurunkan versi utama dari 52(Java 8) menjadi 50(Java 6) untuk kelas di dalam file jar yang dapat dijalankan. Ketika saya menjalankan program Java di dalam Eclipse saya, program itu berjalan tetapi ketika saya membuat file jar, program tersebut menunjukkan kesalahan Major.minor versi 52.0 yang tidak didukung. Saya tidak menginstal Java 7 dan Java 8 di sistem saya.


person Satish Dalal    schedule 23.01.2020    source sumber


Jawaban (1)


Tidak dapat mengubah versi utama (file kelas) dari file jar yang dapat dijalankan di Eclipse.

Benar. Kamu tidak bisa melakukan itu.

Nomor versi bukanlah nomor versi file JAR. Ini adalah nomor versi format file kelas yang digunakan untuk mewakili kelas-kelas dalam JAR tersebut. (Dan secara teknis, file kelas yang berbeda dalam JAR bisa saja memiliki nomor versi file kelas yang berbeda.)

Yang sebenarnya Anda perlukan adalah mengkompilasi ulang kode dari kode sumber dengan menentukan nomor versi kompiler yang berbeda. Ini dapat dilakukan di Eclipse menggunakan pengaturan proyek, atau (dengan Maven) di file POM. Namun perhatikan bahwa Anda akan mendapatkan hasil terbaik jika Eclipse memiliki akses ke JDK/JRE untuk versi Java target.

(Saya belum memeriksa apakah kompiler Eclipse Luna masih mampu menghasilkan kode untuk Java 6. Saya samar-samar ingat bahwa opsi ini dihilangkan untuk beberapa kompiler Java. Mendukung pembuatan kode untuk beberapa platform lama menghalangi kemajuan. Jadi Anda mungkin harus menggunakan Eclipse versi lama ...)


Karena itu, Anda tidak boleh menggunakan Java 7 atau versi lebih lama. Mereka telah berada di akhir masa hidup selama beberapa tahun. Anda kehilangan patch keamanan selama bertahun-tahun dan hal-hal bagus lainnya. Dianjurkan untuk mengupgrade platform build dan eksekusi Anda ke setidaknya Java 8 atau Java 11 ... sesegera mungkin.

Saya tidak menginstal Java 1.7 dan 1.8 di sistem saya.

Ya ... perbaiki itu. Instal Java 1.8 == Java 8.

person Stephen C    schedule 23.01.2020
comment
Terima kasih tetapi saya mengkompilasi ulang kode dan mengekspor file jar yang dapat dijalankan lagi tetapi hasilnya tetap sama. Sebenarnya saya hanya memerlukan kelas kompilasi Java 6 saja. Saya tidak menginstal Java 7 dan Java 8 di sistem saya, lalu bagaimana file kelas Java dikompilasi dari versi 52. - person Satish Dalal; 23.01.2020
comment
Eclipse menggunakan kompiler internal; lihat bagaimana cara mendapatkan gerhana untuk menggunakan versi kompiler yang berbeda untuk Java?. - person Emmanuel Chebbi; 23.01.2020
comment
Benar. Dan kompiler tersebut mampu menghasilkan bytecode untuk sejumlah versi file kelas target. Jadi, Anda perlu mengkonfigurasi Eclipse untuk melakukan apa yang Anda inginkan; lihat Jawaban saya. Alternatifnya, jalankan kompilasi Anda dari baris perintah menggunakan alat build seperti maven, ant, gradle, dan atur instruksi build dengan tepat. - person Stephen C; 23.01.2020