为什么我会这样?我该如何解决?
C:\Users\ash>java version
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
has value '1.7.0_01', but '1.7' is required.
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.
答案 0 :(得分:38)
重新安装所有JDK的公认解决方案有点苛刻。 我也经历过这个问题,这是我的2美分:
自从我安装了JDK 8并且仍安装了JDK 6以来,这个问题就开始发生了。我需要处理我正在进行的不同项目。
我注意到我有一个用户和一个系统%JAVA_HOME%
,所以我删除了我的用户%JAVA_HOME%
变量,只剩下系统一个。
我还注意到在我的Oracle安装中有一些Java可执行文件,我相信那些因为我的Oracle和Java安装都存在冲突的文件存在于我的%PATH%
变量中。
我从%PATH%
变量中删除了所有Java路径,只留下变量开头的%JAVA_HOME%\bin
,以避免与Oracle安装发生任何冲突。
答案 1 :(得分:28)
安装java 1.8后我遇到了类似的问题。
要解决此问题,请转到高级系统设置 - >路径并删除
C:\ ProgramData \甲骨文\爪哇\ javapath;
答案 2 :(得分:11)
重新安装JDK并在JDK上设置系统变量JAVA_HOME。 (例如C:\ tools \ jdk7)
并将JAVA_HOME变量添加到PATH系统变量
输入命令行
echo %JAVA_HOME%
和
java -version
验证您的安装是否成功完成。
答案 3 :(得分:11)
删除
C:\ ProgramData \甲骨文\爪哇\ javapath;
像魅力一样工作
答案 4 :(得分:2)
确保您的JDK Path
变量指向\bin
文件夹并位于列表的顶部。
如果有任何其他条目有一个名为java的文件(例如C:\ProgramData\Oracle\Java\javapath
),它将对该文件而不是JDK中的java文件运行命令。除非您的文件因某种原因损坏或损坏,否则无需重新安装整个JDK。
答案 5 :(得分:2)
在安装Java 10.0之后,我遇到了类似的问题
要解决此问题,请转到高级系统设置->路径并删除
C:\ ProgramData \ Oracle \ Java \ javapath;
答案 6 :(得分:2)
我必须从发生冲突的“路径”中删除“通用文件” javapath,以使其正常运行。现在,幸运的是, java -version 可以正常工作。
$filename = 'CompanySubset.csv';
$company_array = [];
if (($handle = fopen("{$filename}", "r")) !== FALSE) {
while (($companyData = fgetcsv($handle, 1000, ",")) !== FALSE) {
$company_array[] = $companyData;
}
fclose($handle);
}
答案 7 :(得分:1)
您可能在64位环境中使用32位版本的java。 从HKLM \ Software \ JavaSoft导出注册表配置单元并导入HKLM \ Software \ Wow6432Node \ JavaSoft。对于1.6,我只需要JavaHome和RuntimeLib值。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Javasoft]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Javasoft\Java Runtime Environment]
"CurrentVersion"="1.6"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Javasoft\Java Runtime Environment\1.6]
"JavaHome"="C:\\Java\\jre"
"RuntimeLib"="C:\\Java\\jre\\bin\\client\\jvm.dll"
答案 8 :(得分:1)
我编辑了我的路径,将Oracle JDK放在路径的开头并修复了它。
答案 9 :(得分:1)
问题: Windows 2012服务器中存在相同的问题。我们使用了JAVA_HOME环境系统变量,我们在PATH中使用了这种设置:...%JAVA_HOME%/ bin; ... 并且PATH中没有其他与Java相关的设置。
问题是我们在JAVA_HOME变量的值的末尾有一个空格。就像'C:\ Program Files \ Java \ Jdk 1.8.0_172'一样,%JAVA_HOME%/ bin的意思是'C:\ Program Files \ Java \ Jdk 1.8.0_172 \ bin'。因此,由于该值被空间分割,并且系统尝试在“ C:\ Program Files \ Java \ Jdk 1.8.0_172”处查找java.exe,而显然没有。
解决方法是::从JAVA_HOME的值末尾删除空格!
答案 10 :(得分:1)
不幸的是,以上都不对我有用。 当我卸载计算机上安装的旧JDK版本时,该错误已解决。我只是使用“卸载或更改程序”工具(在“控制面板”下)完成了此操作。
答案 11 :(得分:0)
转到 CMD 并键入以下内容: 设置路径=C:\Program Files\Java\jdk1.8.0_291\bin
(这里jdk1.8.0_291代表你的java版本,可能因你而异)
答案 12 :(得分:0)
。不要忘记重新打开编辑器。
答案 13 :(得分:0)
对于我来说,regedit信息是正确的,并且通过执行以下操作解决了问题:
1)将JAVA_HOME设置为jdk-设置JAVA_HOME = C:\ Program Files \ Java \\ bin 2)将PATH设置为jre-设置PATH =“ C:\ Program Files \ Java \\ bin”
答案 14 :(得分:0)
当您的“ Java Runtime Environment”注册表项丢失或与已安装的JDK不匹配时,通常会在Windows中发生此问题。不匹配的原因可能是由于多个JDK。
解决步骤:
打开“运行”窗口:
按 windows + R
打开注册表窗口:
输入“ regedit”并输入。
转到:\ HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \
如果JavaSoft中不存在Java Runtime Environment,则创建新的Key并命名为Java Runtime Environment。
对于Java Runtime Environment,请创建“ CurrenVersion”字符串键,并提供适当的版本作为值:
创建一个新的1.8子项。</ p>
对于1.8,创建一个名称为JavaHome且值为JRE home的字符串键:
参考:https://mybindirectory.blogspot.com/2019/05/error-could-not-find-javadll.html
答案 15 :(得分:0)
此过程将清除Java的所有痕迹,然后安装新的Java。
注意:当完成多个安装和卸载时,会发生此问题。
答案 16 :(得分:0)
"C:\Windows\System32\java.exe" to "C:\Windows\System32\java_old.exe"
java -version
完成。
答案 17 :(得分:0)
在环境变量中完成所有设置后,如果您在cmd中遇到此错误,并出现另一个错误,如“找不到运行时环境”。然后,您只需要在 jdk文件夹中运行 jre.exe ,然后重新安装它,然后通过 java -version 命令对其进行重新检查。希望对您有帮助。
答案 18 :(得分:0)
我从PATH变量中删除了“C:\ Program Files(x86)\ Heroku \ bin”,问题已经消失。我认为可能是Heroku需要不同版本的Java。因此,检查PATH变量中的所有目录,删除可能存在冲突的目录。