Tim pengembangan saya baru-baru ini dipaksa pindah ke lingkungan pengembangan jarak jauh di mana kami tidak memiliki akses penuh ke server. Sebelum perubahan selesai, kami memiliki JAR yang berfungsi dengan baik di Java 1.7 x64 bersama dengan JRE 7. Ketika kami pindah ke server baru JAR kami berjalan dengan baik, tetapi kemudian salah satu admin server "memperbarui" Java kami ke yang lebih lama versi dan mencopot pemasangan yang kami gunakan. Jangan tanya saya kenapa, saya tidak tahu. Saya menginstal ulang Java 1.7 dan menghapus 1.6 bersama dengan JRE.
Masalah berikut ini terjadi saat runtime, tidak ada kesalahan versi:
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.7', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
Saya telah menjalankan JAR yang sama di laptop saya tanpa masalah. Baik server dan laptop saya memiliki JDK 1.7 dan JRE 7 di masing-masing variabel% HOME% dan PATH sistem. Saya bahkan telah menginstal ulang JRE 6 dan menempatkannya kemudian di variabel PATH lingkungan sistem dengan hasil yang sama.
Saya juga telah mengubah registri kembali untuk melihat 1.6 dan hasilnya sebagai berikut, yang saya cari dan tampaknya dari menginstal beberapa Javas (mengarah kembali ke masalah awal saya):
Exception in thread "main" java.lang.UnsupportedClassVersionError: ... :
Unsupported major.minor version 51.0
Saya akan menghargai setiap wawasan yang Anda semua miliki karena saya telah melihat-lihat berbagai forum tetapi sepertinya tidak ada yang benar-benar menjadi masalah saya. Juga, ini telah terjadi di server lain yang kami gunakan juga. Terima kasih!
Pembaruan: Tidak beruntung dengan mengkompilasi ulang JAR menjadi 1.6 atau 1.7 dan mencocokkan JDK. Juga, mengapa di dunia ini versi Java yang lebih baru merusak versi terkompilasi yang lebih lama?