Kesalahan kunci registri: Versi Java memiliki nilai '1.8', tetapi '1.7' diperlukan

91

Saat berlari

sencha app build production

Saya mendapatkan kesalahan berikut:

Kesalahan: Kunci registri 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion '

memiliki nilai '1.8', tetapi '1.7' diperlukan. Kesalahan: tidak dapat menemukan java.dll Kesalahan: Tidak dapat menemukan Java SE Runtime Environment.

java -version , perintahnya adalah sebagai berikut:

versi java "1.8.0_40" Java (TM) SE Runtime Environment (build 1.8.0_40-b26) Java HotSpot (TM) 64-Bit Server VM (build 25.40-b25, mode campuran)

Tidak dapat menemukan jalan yang salah. Ada ide?

----------------------- EDIT -------------------------- ----------------------

Catatan : Saya menggunakan Windows 7 (64 bit).

Saya telah mencoba mencopot pemasangan sencha touch cmd dan menginstal ulang. Tapi tetap saja errornya sama.

Saya telah menghapus semua contoh versi java dan menginstal ulang yang terbaru, Masih masalah tetap ada.

Anand Gupta
sumber

Jawaban:

294

Setelah mencoba lebih dari ratusan trik, akhirnya berhasil.

Saya menghapus semua java.exe, javaw.exedan javaws.exedari saya

  1. Windows\System32 dan

  2. Windows\SysWOW64 map. [Coba langkah 2 jika Anda memiliki sistem x64 (Menangkan 7 64 bit)]

Anand Gupta
sumber
11
Menangkan 10 pengguna 64Bit: menghapus 3 file di System32akan menyelesaikan masalah.
iTurki
4
Tapi kita harus menutup dan membuka kembali cmd dan mengetikkan java -version untuk melihat perubahan ... Berhasil terima kasih!
Cristian B.
1
@ SkepticScribbler: Ini terjadi ketika Anda entah bagaimana bingung dengan java itu sendiri. Anda mencoba menjalankan java 7 VM di mana ia menemukan JRE 8. Masalah ini mungkin muncul meskipun Anda mengetik di baris perintah hanya java atau java -version di lingkungan yang salah konfigurasi.
Anand Gupta
@AnandGupta ini adalah bidikan dalam kegelapan, bukan solusi - stackoverflow.com/a/53192247/1423507
masseyb
39

Dalam kasus saya (Windows 7 64-bit), saya hanya melakukan hal berikut:

  • Menghapus referensi ke C: \ ProgramData \ Oracle \ Java \ javapath; dari variabel lingkungan Path
  • File dihapus java , javaw dan javaws dari C: \ Windows \ System32 folder

Setelah itu, saya menutup semua konsol baris perintah yang terbuka, membukanya kembali dan menjalankan java -version .

aribeiro
sumber
Saya mengalami masalah ini di Windows 10 saat menginstal JDK5u14, JDK6u34, JDK7u51 dan JDK8u121 (dalam urutan itu). Menghapus file java dari folder Windows tidak cukup. Juga untuk menghapus jalur dari variabel lingkungan PATH.
uhm
31
  1. buka regedit
  2. pergi ke [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
  3. ubah nilai CurrentVersiondari "1.8" menjadi "1.7"
lucken
sumber
2
Terima kasih. Itu memecahkan masalah saya. Saya tidak memiliki izin untuk menghapus apa pun di bawah SysWOW64. Cukup mengubah CurrentVersion melalui regedit memecahkan masalah saya.
Krish
1
Solusi yang jauh lebih sederhana daripada mencoba menghapus semua versi java yang asing!
Fred Andrews
.. Namun, itu tidak menyelesaikan apa pun. Kemudian penginstal mengeluh dan memang begitu, bahwa java 8 diperlukan.
user508402
Terima kasih solusi ini berhasil mencoba untuk memecahkan kesalahan ini untuk waktu yang lama
Abhishek Sawant
Peringatan: Ini mungkin mengacaukan aplikasi Anda yang lain yang dikonfigurasi untuk menggunakan 1.8.
Waqas
19

re: pengguna Windows

Tidak. Jangan hapus referensi lingkungan Javapath dari variabel PATH Anda.

Alasan mengapa registri tidak berfungsi adalah karena skrip Oracle Javapath perlu dijalankan dalam urutan PATH sebelum direktori JRE & JDK - ini akan memilah-milah versi saat ini:

letakkan direktori ini di HEAD %PATH%variabel Anda :

C:\ProgramData\Oracle\Java\javapath

[atau di mana pun itu di desktop Anda]

jadi PATH Anda akan terlihat seperti ini - milik saya misalnya

PATH=C:\ProgramData\Oracle\Java\javapath;<other path directories>;E:\Program Files\Java\jdk1.8.0_77\bin;E:\Program Files\Java\jre1.8.0_77\bin

Anda kemudian akan melihat versi yang benar dan saat ini:

C:\>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
Andrew
sumber
Yang ini berhasil untuk saya. Saya memiliki Windows 7 (64-bit). Saya telah memindahkan C: \ ProgramData \ Oracle \ Java \ javapath ke awal PATH, seperti yang Anda sarankan. Terima kasih!
softwarelover
1
Hei, berhasil! Jangan lupa restart komputer Anda, terima kasih.
Sandoval0992
12

Pengalaman saya:

Saya menggunakan windows 8.1 dan saya telah menurunkan versi JAVA dari 1.8 menjadi 1.7 dan saya mendapatkan kesalahan yang sama.

Kesalahan: Kunci registri 'Software \ JavaSoft \ Ja memiliki nilai' 1.7 ', tetapi' 1.8 'diperlukan.

Saya telah menghapus java.exe , javaw.exe dan javaws.ex e dari folder C: \ Windows \ System32 dan itu berhasil untuk saya.

RJ_Singh
sumber
Ini tidak akan berfungsi jika ada java lainnya yang dapat dieksekusi untuk versi Java lain di jalur tersebut.
Underverse
9

Saya punya masalah yang sama. Solusi sederhana yang berhasil bagi saya adalah mengatur ulang entri di PATHuntuk JRE/JDK. Masalah ini mulai muncul setelah menginstal JRE 8yang instalasinya telah menempatkan beberapa file yang dapat dieksekusi di System32 or SysWOW64direktori, file yang dapat dieksekusi ini mengacaukan. Untuk mengatasi masalah tersebut:

  1. Buat variabel lingkungan yang menunjuk ke beranda JDK sebagai JAVA_HOME.

    set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_45

  2. Letakkan entri %JAVA_HOME%\bindi awal dalam variabel lingkungan PATH Anda. Menambahkan nilai yang ada dari PATH. Sebagai contoh:

    path=C:\Program Files\Java\jdk1.8.0_45\bin;%path%

pratikch
sumber
3
ini adalah solusi terbaik jika Anda ingin menyimpan beberapa versi java secara berdampingan, dan jika Anda tidak memiliki hak istimewa untuk mengubah registri dan menghapus file dari folder windows \ system.
Heinz
3

Saya tidak menghapus file java.exe, tetapi mengubah urutan sistem saya - variabel "path" - sehingga mencerminkan% JAVA_HOME% \ bin sebagai entri pertama. Itu berhasil.

lobak424
sumber
3

Kesalahannya eksplisit ...

Kesalahan: Kunci registri 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'memiliki nilai' 1.8 ', tetapi' 1.7 'diperlukan.

Kesalahan: tidak dapat menemukan java.dll

Kesalahan: Tidak dapat menemukan Java SE Runtime Environment.

... Anda mencoba menggunakan java.exe1.7 yang dapat dieksekusi sementara HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment> CurrentVersionkunci registri memiliki nilai 1.8.

Tema berulang untuk solusi yang diusulkan adalah bahwa kesalahan tersebut adalah kesalahan konfigurasi . Kesalahan dapat diatasi dengan berbagai cara (misalnya konfigurasi ulang lingkungan pengguna atau penghapusan java executable dengan semoga saja dan berharap ada fallback lain java.exedi pengguna %PATH%dan fallback java.exeadalah executable yang benar).

The benar solusi tergantung pada apa yang Anda coba untuk mencapai: "?? Anda mencoba untuk downgrade dari jdk-8 untuk jdk-7 Apakah mencoba untuk meng-upgrade ke jdk-8 ..."

Langkah reproduksi

  1. instal jdk-7u80-windows-x64.exe

catatan:

  • yang java.exedapat dieksekusi tersedia di pengguna %PATH%diinstal diC:\Windows\System32
  • penginstalan tidak memperbarui pengguna %PATH%
  • yang HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersionentri string registry yang dibuat (antara lain) dengan nilai1.7
  1. instal jdk-8u191-windows-x64.exe

catatan:

  • pengguna %PATH%diperbarui untuk dimasukkan C:\Program Files (x86)\Common Files\Oracle\Java\javapathsebagai entri pertama
  • yang yang HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment> CurrentVersionnilai entri registry string diperbarui untuk1.8
  1. perbarui %PATH%variabel lingkungan pengguna , hapusC:\Program Files (x86)\Common Files\Oracle\Java\javapath

  2. di prompt perintah baru java -version

Kesalahan: Kunci registri 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'memiliki nilai' 1.8 ', tetapi' 1.7 'diperlukan.

Kesalahan: tidak dapat menemukan java.dll

Kesalahan: Tidak dapat menemukan Java SE Runtime Environment.

Solusi)

  1. Solusi OP https://stackoverflow.com/a/29769311/1423507 adalah "semoga berhasil dan berharap bahwa ada fallback java.exedi pengguna %PATH%dan bahwa fallback executable adalah benar" pendekatan error. Mengingat langkah-langkah reproduksi, menghapus java.exe, javaw.exedan yang javaws.exedapat dieksekusi dari C:\Windows\System32(hanya dalam kasus saya) akan mengakibatkan tidak ada lagi yang java.exehadir di pengguna yang %PATH%mengakibatkan kesalahan 'java' is not recognized as an internal or external command, operable program or batch file.yang bukan merupakan solusi yang tepat.

  2. jawaban https://stackoverflow.com/a/35775493/1423507 dan https://stackoverflow.com/a/36516620/1423507 berfungsi namun Anda kembali menggunakan java.exe1.7 (mis., perbarui nilai CurrentVersionkunci registri agar sesuai dengan java.exeversi yang ditemukan di pengguna %PATH%).

  3. pastikan java.exe1.8 adalah yang pertama ditemukan di pengguna %PATH%(bagaimana Anda melakukannya tidak relevan) yaitu:

    • perbarui pengguna %PATH%untuk memasukkan C:\Program Files (x86)\Common Files\Oracle\Java\javapathterlebih dahulu (pastikan bahwa file yang dapat dieksekusi di direktori itu benar)
    • perbarui pengguna %PATH%untuk memasukkan jalur absolut dari biner java Anda terlebih dahulu ( set PATH="C:\Program Files\Java\jre1.8.0_191\bin;%PATH%")
    • set java variabel lingkungan spesifik dan update pengguna %PATH%dengan mereka ( set JAVA_HOME="C:\Program Files\Java"; set JRE_HOME=%JAVA_HOME%\jre1.8.0_191; set PATH=%JRE_HOME%\bin;%PATH%)
masseyb
sumber
@whoever_that_downvotes - jawaban ini tidak dapat ditingkatkan tanpa umpan balik yang membangun. Berikan komentar tentang "mengapa" dan mungkin dapat membuat jawaban ini lebih baik untuk kepentingan komunitas.
masseyb
2

Saya mengalami kesalahan ini pada beberapa layanan windows yang menjalankan Java. Pada akhirnya, di komputer saya, saya mencoba untuk menghapus versi java lainnya.

Saya hanya menyisakan 1,8 dan sekarang semuanya berfungsi.

Perdana Optimal
sumber
1

Jawaban aribeiro berhasil untuk saya - dengan sedikit perubahan

  • Saya menghapus referensi ke C: \ ProgramData \ Oracle \ Java \ javapath; dari variabel lingkungan Path
  • Saya membuat / path / to / jdkhome sebagai entri pertama dalam variabel lingkungan PATH saya. Saya pikir hanya ini yang dibutuhkan.
abdel
sumber
1

Adapun saya di win7 64bit.

Salin java.exe javaw.exe javaws.exe di folder C:\Program Files\Java\jre1.8.0_91\bin to the C:\Windows\System32.

dan kemudian buka cmd, ketik java -version.

C:\Users\HEcom>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Sebelum di atas pastikan Registry's CurrentVersion adalah 1.8

Di menu MULAI ketik "regedit" untuk membuka editor Registri

  1. Pergi ke "HKEY_LOCAL_MACHINE" di sisi kiri menu registry explorer / tree
  2. Klik "PERANGKAT LUNAK" dalam pendaftar "HKEY_LOCAL_MACHINE"
  3. Klik "JavaSoft" dalam registri "PERANGKAT LUNAK"
  4. Klik "Java Runtime Environment" dalam daftar "JavaSoft" di sini Anda dapat melihat berbagai versi java yang diinstal
  5. Klik "Java Runtime Environment" - Di sisi kanan Anda akan mendapatkan 4-5 baris. Silakan pilih "CurrentVersion" dan Klik kanan (pilih opsi ubah) pastikan versinya adalah "1.8"
Francis Bacon
sumber
Ini ide yang sangat buruk. Folder biner harus ditambahkan ke jalur alih-alih memindahkan file ke folder yang sudah ada di jalur. Ini dapat menyebabkan sakit kepala yang parah jika orang lain harus mengupdate java di sistem dan tidak memiliki pengetahuan tentang "solusi" ini. Dan itulah sumber masalah operasi ... Perbaiki jalur Anda sebagai gantinya.
Riwels
Ubah AKU baru saja PINDAH menjadi AKU hanya MENYALIN dan kamu akan baik-baik saja.
Matthieu
1

Solusi saya untuk masalah ini datang setelah membaca dan mencoba semua hal di atas.

Dalam kasus saya, saya mencoba menurunkan versi Java untuk menggunakan cetakan dalam Apache ActiveMQ. Setelah menghapus semua versi Java dan membersihkan registri saya mendapatkan kesalahan yang sama

Kesalahan: Kunci registri 'Software \ JavaSoft \ Java Runtime Environment' \ CurrentVersion 'memiliki nilai' 1.7 ', tetapi dibutuhkan' 1.8 '. "

Dalam kasus saya saya harus pergi ke variabel lingkungan, mengedit jalan, membuka lokasi javapath ( C:\ProgramData\Oracle\Java\javapath) dan ada itu - tiga file ( java.exe, javaw.exe, javaws.exe) yang tetap dari versi JRE8.

Setelah menetapkan fakta ini, saya cukup menukarnya dengan file yang sama dari C:\Windows\SysWOW64direktori (yang berasal dari JRE7versi) dan semuanya bekerja dengan sempurna.

MikeG
sumber
1

Setelah pembaruan Java otomatis terbaru, saya tidak dapat menjalankan Java dari prompt perintah.

Variabel jalur saya memiliki 'C: \ ProgramData \ Oracle \ Java \ javapath;'

Saya tidak bisa melakukan cd ke 'C: \ ProgramData \ Oracle \ Java \ javapath;' dari jendela prompt perintah, karena tidak ada.

Saya menghapus C: \ ProgramData \ Oracle \ Java \ javapath; ' dari variabel path dan menggantinya dengan 'C: \ Program Files \ Java \ jre1.8.0_141 \ bin;'

pengguna20150603
sumber
Ini lebih merupakan komentar daripada jawaban. Pertanyaannya adalah tentang alat yang sangat spesifik, dan memperjelas bahwa java ada dalam akta ditemukan.
GhostCat
1

Anda harus menentukan folder jdk Anda di variabel JAVA_HOME, tambahkan% JAVA_HOME% ke jalur variabel Anda

Hapus atau ubah nama java.exe, javaw.exe, dan javaw di folder system32 Anda

jalankan cmd.exe, java -version sekarang ambil versi baru yang Anda tentukan di JAVA_HOME.

El mehdi AZROUR
sumber
1

Selain jawaban Anand Gupta, pastikan tidak ada java lain kecuali yang Anda butuhkan yang digunakan. Jalankan which java( where javauntuk Windows) dan lihat java mana yang dapat dieksekusi digunakan. Hapus saja yang tidak ingin Anda gunakan dan jika yang Anda butuhkan tidak ada, tambahkan ke PATH.

Sergey K.
sumber
0

Pertama Anda harus memiliki Java 7. Jika Anda tidak punya, instal terlebih dahulu (saya tidak tahu apa yang Anda gunakan, Linux, Mac, yum, apt, homebrew, Anda harus mencari tahu sendiri.)

Jika Anda sudah memiliki Java 7, jalankan:

echo $JAVA_HOME

Output harus sesuatu seperti ini: /usr/lib/jvm/java-8-oracle. Di dekat direktori ini, Anda akan melihat java-7direktori. Setelah Anda menemukannya, jalankan

export JAVA_HOME=${java-7-dir}

Ubah {java-7-dir}dengan jalur direktori Anda. Kemudian Anda dapat menjalankan perintah Anda.

Ini hanya solusi sementara. Untuk mengubahnya secara permanen, masukkan perintah di atas ke ~/.bashrcfile Anda .

EDIT: Jika Anda menggunakan Windows , ubah variabel lingkungan JAVA_HOMEke jalur direktori instalasi Java 7 Anda.

mtyurt.dll
sumber
@AnandGupta Saya menambahkan kasus Windows.
mtyurt
Dalam kasus Linux, Anda perlu memberikan jalur ke biner Java di JAVA_HOME. Misalnya, /usr/java/jdk1.5.0_07/bin/java. Dalam kasus Windows, hanya direktori instalasi yang harus dilakukan.
Aditya K
0

Kontribusi singkat saya, untuk berbagi masalah yang sama dengan Talend Open Studio versi 64 bit.

  1. Luncurkan .. \ TOS_DI-Win32-20150702_1326-V6.0.0 \ TOS_DI-win-x86_64.exe secara manual (bukan menautkan menu startup Windows)
  2. dan pesan kesalahan registri ini muncul

Untuk mengatasi ini, hapus semua file java.exe, javaw.exe dan javaws.exe di c: \ ProgramData \ Oracle \ Java \ javapath \

dan KL dimulai dengan versi 64 bit dengan benar!

Pabrik Undigo
sumber
0

Hapus dari jalur Sistem:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

Dan itu akan memperbaiki masalah dalam meningkatkan versi java dari 1.7 menjadi 1.8

pengguna5645373
sumber
1
Bisakah Anda memberi tahu kami mengapa?
Vinay Prajapati
0

Ada di suatu tempat java.exe lain dari jre versi 1.8 yang ada di "path" Anda harus mencari dan menghapusnya jika memungkinkan. itu mungkin di tempdata pengguna untuk aplikasi yang membutuhkan jre.

masoudifar.dll
sumber
0

Harap ubah variabel sistem JAVA_BIN dan JAVA_HOME, lalu mulai ulang sistem atau mungkin masuk kembali. Anda mengalami kesalahan itu karena masih jalur jdk1.7. Di windows seperti ini: masukkan deskripsi gambar di sini

Tiina
sumber
0

Cukup Instal Java SE Runtime Environment JRE 7!

Sekarang Anda melihat "java 7" & "java 8" di "Program dan Fitur" di "Panel Kontrol"

Itu berhasil untuk saya.

Tenesi
sumber
0

Salah satu solusi yang mungkin untuk masalah ini adalah menambahkan di folder Sencha CMD file bat seperti yang disarankan di utas ini Sencha Cmd 5 + Java 8 Error .

Batch akan memiliki nama "sencha.bat" dengan kode ini:

@echo off
set JAVA_HOME=<YOUR JDK 7 HOME>
set PATH=%JAVA_HOME%\bin;%PATH%
set SENCHA_HOME=%~dp0
java -jar "%SENCHA_HOME%\sencha.jar" %*

Letakkan di folder sencha, dalam kasus saya

C:\Users\<YOUR USER>\bin\Sencha\Architect\Cmd\6.2.0.103

Langkah selanjutnya adalah mengubah variabel lingkungan PATHEXT. Ubah variabel pengguna agar memiliki dampak sekecil mungkin.

Saya berubah dari

COM;.CMD;.EXE;.BAT;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

untuk

COM;.BAT;.EXE;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Idenya adalah membuat windows menjalankan file .bat lebih dulu dari file .exe. Ini penting karena di folder sencha sudah ada file "sencha.exe". Dan di baris perintah jika Anda mengetik "sencha" itu akan mengeksekusi "sencha.exe", bukan "sencha.bat".

Ini adalah satu-satunya solusi yang berhasil karena saya sangat dibatasi dalam hal izin.

Adilson Cabral
sumber
0

Sistem Saya: - Windows 8.1

Lingkungan Java

  • C: \ JavaEnvironment \ Java \ jdk1.8.0_161
  • C: \ JavaEnvironment \ Java \ jdk1.7.0_75

Saya baru saja menginstal Oracle 11g XE dan saya menerima pesan kesalahan yang disebutkan saat mengakses perintah "java" pada prompt perintah.

Saya memeriksa variabel lingkungan saya, memeriksa urutannya (seperti yang disebutkan oleh balasan sebelumnya) dan mendeteksi bahwa variabel PATH sistem saya memiliki entri berikut sebagai entri pertama:

C: \ OracleDatabase \ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ bin ;

Saya mengubah urutan dan menentukan jalur JDK sebagai entri pertama:

masukkan deskripsi gambar di sini

Saya mereplikasi perubahan yang sama ke Variabel Pengguna: Jalur

masukkan deskripsi gambar di sini

Setelah menyelesaikan aktivitas di atas, saya memulai ulang command prompt dan menjalankan perintah java -version dan masalahnya telah hilang. Ini menampilkan Java 8 sebagai versi saat ini.

Philip Dilip
sumber
-1

Saya memiliki masalah yang sama. Memindahkan jalur JDK dan JRE ke bagian atas variabel jalur memecahkan masalah (yang mengambil prioritas pertama atas apa yang ada di bawah System32)

Misalnya, ini milik saya:

masukkan deskripsi gambar di sini

Ramesh
sumber
-2

Hapus Java 8 dari daftar program Anda. DENGAN mengikuti langkah-langkah di bawah ini: -

Dari desktop Anda, klik pada Start Menu (atau Start ball) di kiri bawah layar Anda. Buka Panel Kontrol. Klik Program dan Fitur. Pilih Java8 dan klik Uninstall

verma nitish
sumber
-2

Matikan semua aplikasi yang berhubungan dengan java di task manager dan kemudian hapus Java.exe, Javaw.exe dan Jawaws.exe dari C: \ windows \ System32

Ini seharusnya menyelesaikan masalah Anda ... :)

Brijesh Rana
sumber
bisakah Anda menjelaskan bagaimana hal itu menyelesaikan masalah yang dihadapi?
Muhammad Mamoor Khan
-3

baru saja melakukan ini dan berhasil

HKLM> PERANGKAT LUNAK> JavaSoft> Java Runtime Environment

cukup ubah versi saat ini menjadi 1.7 secara manual.

lol ... tapi berhasil!

pengguna6180925
sumber