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?
sumber
java.exe
,,javaw.exe
danjavaws.exe
disimpan diWindows/SysWOW64
. Juga untuk beberapa alasan ketika saya menginstal 1,8 SDK terinstaljava.exe
,javaw.exe
danjavaws.exe
di bawahC:/ProgramData/Oracle/Java/javapath
. Tidak tahu mengapa, tapi saya menghapusnya juga danjava -version
masih berfungsi.Baru saja mengalami kesalahan serupa saat menginstal java 8 (jdk & jre) pada sistem yang sudah menjalankan Java 7.
Lingkungan saya telah diatur dengan benar (Path & java_home didefinisikan dengan benar), tetapi masalah muncul dari cara kerja installer Java pra-8, yaitu mereka biasa menyalin tiga executable (java.exe, javaw.exe & javaws.exe ) ke direktori sistem Windows. Ini tetap ada kecuali ditimpa oleh instalasi pra-8 yang baru.
Namun penginstal Java 8 malah membuat tautan simbolis di direktori baru, C: \ ProgramData \ Oracle \ Java \ javapath, menunjuk ke lokasi JRE 8 yang sebenarnya.
Ini berarti Anda benar-benar akan menjalankan 7 mantan tetapi menggunakan 8 DLL baru.
Jadi, solusinya cukup dengan menghapus 3 exes Java, seperti di atas, dari direktori sistem windows.
Jika Anda menjalankan Java 32-bit pada Windows 64-bit, exesnya ada di Windows \ SysWOW64, sebaliknya di Windows \ System32.
sumber
Saya telah menghapus file java di windows / system32 dan saya juga telah menghapus c: \ ProgramData \ Oracle \ Java \ javapath dari variabel PATH, karena ada 3 symlink ke file java 1.8.
Saya memiliki JDK 1.7 di variabel% JAVA_HOME% dan java1.7 / bin di PATH.
PS1: Masalah saya adalah antara Java 1.7 dan Java 1.8.
PS2: Saya tidak dapat menambahkan ini sebagai komentar pada jawaban Victor karena saya tidak memiliki cukup poin.
sumber
Di menu MULAI ketik "regedit" untuk membuka editor Registri
Buka "HKEY_LOCAL_MACHINE" di sisi kiri menu registry explorer / tree
Klik "PERANGKAT LUNAK" dalam pendaftar "HKEY_LOCAL_MACHINE"
Klik "JavaSoft" dalam registri "PERANGKAT LUNAK"
Klik "Java Runtime Environment" dalam daftar "JavaSoft" di sini Anda dapat melihat berbagai versi java yang diinstal
Klik "Java Runtime Environment" - Di sisi kanan Anda akan mendapatkan 4-5 baris. Silakan pilih "CurrentVersion" dan Klik kanan (pilih opsi ubah) Ubah versi ke "1.7"
Sekarang keajaiban telah selesai
sumber
Saya tidak tahu apakah ada yang masih mengikuti utas ini, tetapi saya baru-baru ini mengalami masalah ini ketika mencoba meluncurkan ActiveMQ 5.10 sebagai layanan Windows.
Saya tidak menyetel jalur JAVA_HOME. Saya telah menginstal Java 6 dan Java 7, tetapi versi defaultnya adalah v7. (yaitu jika saya membuka jendela perintah dan mengetik "java -version").
Di sinilah petunjuknya - "java -version" mengembalikan "Server VM Java HotSpot (TM) 64-Bit (build 23.1-b03, mode campuran)" tetapi saya telah menginstal layanan Win32 ...
Ternyata jika Anda menggunakan pembungkus Win32 pada mesin 64-bit, ia entah bagaimana memutuskan untuk menggunakan versi Java yang berbeda ...
Jadi perbaikan saya adalah mencopot pemasangan versi 32-bit dari pembungkus dan menginstal versi 64-bit. keengganan pada mesin saya; hanya kebiasaan saya kira ... Tapi untungnya saya menyelesaikan masalah ini pada akhirnya ...
sumber
Untuk Win7 saya
Paradox adalah java.exe dan javaw.exe di folder System32. Membuka folder itu saya tidak dapat melihatnya tetapi menggunakan pencarian di menu Mulai saya mendapatkan tautan ke file-file itu, menghapusnya. Searsh berikutnya memberi saya tautan ke file dari JAVA_HOME
sihir)
sumber
Ubah ke direktori dengan benar
java.exe
yaitu pergi ke versi JDK yang diperlukanjava.exe
Jalankan
java.exe
dari direktori ini, ini lebih diutamakan daripada pengaturan registri dan $ PATH.sumber
Saya memecahkan masalah ini dengan menghapus Java 1.8
sumber
Stoples itu disusun agar
1.6
sesuai. Itulah mengapa Anda mendapatkan kesalahan ini. Dua resolusi:1) Gunakan Java 1.6
ATAU
2) Kompilasi ulang toples agar sesuai dengan lingkungan Anda
1.7
sumber
Menggunakan regedit, hapus entri yang sesuai dengan java 7. Ini akan berhasil.
sumber