JAVA_HOME 设置为无效目录:

Posted

技术标签:

【中文标题】JAVA_HOME 设置为无效目录:【英文标题】:JAVA_HOME is set to an invalid directory: 【发布时间】:2017-12-24 06:17:45 【问题描述】:

我在我的系统C:\Program Files\Java\jdk1.8.0_ 131\bin; 中设置了JAVA_HOME,并且我试图在命令提示符下运行cordova 命令(cordova build),但我得到了下面的错误。我已经尝试了所有方法,但无法解决此问题:

错误:C:\Program 文件\Java\jdk1.8.0_131\bin;

请在您的环境中设置 JAVA_HOME 变量以匹配 Java 安装的位置。

【问题讨论】:

JAVA_HOME 只能达到C:\Program Files\Java\jdk1.8.0_ 131 我删除了仍然遇到同样的错误 更改变量后,您需要重新启动命令行..还要删除变量开头和结尾的双引号 搜索Setting and getting windows environment variables from the command prompt 之类的内容,了解如何设置和检查环境变量。 它工作正常,但出现另一个错误FAILURE:构建失败并出现异常。 * 出了什么问题:无法启动守护进程。此问题可能是由于守护程序配置不正确造成的。例如,使用了无法识别的 jvm 选项。请参阅docs.gradle.org 3.3/userguide/gradle_daemon.html 上有关守护进程的用户指南章节 请阅读以下进程输出以了解更多信息: ------------------ ----- VM 初始化时出错无法为 2097152KB 对象堆预留足够的空间 【参考方案1】:

您应该使用 C:\Program Files\Java\jdk1.8.0_12 进行设置。

\bin 不是必需的。

【讨论】:

是的,我打开了。 评论救了我 :) 谢谢 对于 Linux,需要类似的东西:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk/ 因为我大发雷霆所以低调尴尬 天啊... 5 个小时来回尝试让 Cordova 工作... 不需要“/bin”...谢谢!【参考方案2】:

JAVA_HOME 应该指向 home jdk 目录,而不是 jdk/bin 目录。

您需要像这样设置JAVA_HOME

JAVA_HOME="C:\Program Files\Java\jdk1.8.0_131"

【讨论】:

【参考方案3】:

删除\bin,同时删除最后的;。重启cmd后运行。

【讨论】:

你的评论救了我的命。谢谢。在末尾添加了分号,这会导致在 google 中进行无休止的搜索。在最后去除半冒号后,它的作用就像魅力一样。谢谢 你的答案是正确的答案。即使在我删除 \bin 之后,由于“;”而出现错误。 删除分号是诀窍【参考方案4】:

尝试以下方法:

JAVA_HOME 路径中删除\bin。 打开新的命令行窗口。 以管理员身份运行您的命令。

【讨论】:

在设置 React Native 时,我不得不从 JAVA_HOME 路径中删除 \bin【参考方案5】:

在 Window 10 上,问题出在分号 ;

转到edit the system environment variables并删除JAVA_HOMEC:\Program Files\Java\jdk1.8.0_144末尾的分号

换句话说,将这个C:\Program Files\Java\jdk1.8.0_12; 转换为C:\Program Files\Java\jdk1.8.0_12

您可能需要删除 Windows 对话框中的条目并创建一个新条目。如果您曾经有多个条目并获得更大的Form view,Windows 会自动在每个条目的末尾插入一个;,即使您只剩下一个条目。

【讨论】:

【参考方案6】:

JAVA_HOME 应该是C:\Program Files\Java\jdk1.8.0_172 路径中不要包含分号(;) 或bin。任何高于 7 的 jdk 版本都可以使用。另外,你需要重新启动cmd

【讨论】:

【参考方案7】:

JAVA_HOME设置为C:\Program Files\Java\jdk1.8.0_172

不要使用分号“;”具有以上 JAVA_HOME 值

要验证设置是否正确,请转到命令提示符检查 C:.......>sdkmanager --list

将出现一个完整的列表,现在它已成功保存。

否则会显示 JAVA_HOME 路径设置不正确的错误。

【讨论】:

【参考方案8】:

linuxma​​c 上:

    寻找路径java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' 结果,例如java.home = /usr/lib/jvm/java-11-openjdk-amd64 复制:/usr/lib/jvm/java-11-openjdk-amd64 在配置 bash 文件中添加一行(例如~/.zshrc):export JAVA_HOME=<resultFirstStep>

【讨论】:

也适用于 Mac【参考方案9】:

设置 JAVA_HOME 变量后,以管理员身份运行 android studio

【讨论】:

【参考方案10】:

请删除 /bin 甚至分号;从 JAVA_HOME 来解决。

【讨论】:

【参考方案11】:

您只需要设置 C:\Program Files\Java\jdk1.8.0_12。

并使用新的 cmd 检查。会更新的

【讨论】:

【参考方案12】:

首先尝试从路径中删除 '\bin' 并设置主目录 JAVA_HOME 如下: JAVA_HOME : C:\Program Files\Java\jdk1.8.0_131

第二次更新系统路径:

    在“系统变量”下的“环境变量”窗口中选择路径 点击“编辑...” 在“编辑环境变量”窗口中点击“新建” 输入 %JAVA_HOME%\bin

第三次重启你的 docker。

windows中java路径的设置参考link。

【讨论】:

【参考方案13】:

我在安装 Flutter 时在谷歌上搜索 android 许可证问题时发现了这一点。

对于 Linux,通过在末尾添加以下行来更新您的 ~/.bashrc(或其他 shell 配置)文件:

JAVA_HOME=/usr/local/android-studio/jre

注意:我按照official installation guide for Linux (link)安装了Android studio。

对于 Windows,使用 android studio 的路径到 jre 目录并使用正确的值更新环境变量。

然后,运行flutter doctor --android-licenses 并按y 以查看未被接受的许可证。 对于每个许可证,请按y。它会在许可文件末尾询问Accept? (y/N):。 在您接受所有未接受的许可后,您应该看到:

All SDK package licenses accepted

【讨论】:

【参考方案14】:

我认为您需要删除 ';'从 java 路径的末尾开始。

【讨论】:

那不行,在设置 JAVA_HOME 时,你不应该包含 /bin。如果您仅将其设置为路径,则应包含 bin【参考方案15】:

检查系统变量中JAVA_HOME 的重复条目。

在我的情况下,上述答案均无效,但我有两个 JAVA_HOME 条目,删除一个有效。

【讨论】:

【参考方案16】:

我使用的是jenv

在我的例子中,我使用 jenv 但没有设置 java 版本,所以 jenv 指向的路径实际上是一个 Java 安装。

当我运行echo $JAVA_HOME时,它显示/Users/username/.jenv/versions/system,并且没有这样的文件或目录。

设置java版本

我只需要执行jenv global 15 jenv local 15,指定我想要实际使用的版本,当我重新运行echo $JAVA_HOME 时,JAVA_HOME 发生了变化。

【讨论】:

【参考方案17】:

我在项目的 vs 代码中设置了这样的设置。它为我工作

JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home"

【讨论】:

以上是关于JAVA_HOME 设置为无效目录:的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu Buildozer JAVA_HOME 设置为无效目录

如何设置PATH环境变量

Day01 -- Java 环境变量

JAVA_HOME 和 java -version

Java程序开发步骤是啥?

如何在 Mac OS X 10.9 上设置 JAVA_HOME 环境变量?