【发布时间】:2021-10-14 13:00:27
【问题描述】:
C:\Users\Alex>java
Error: missing `server' JVM at `D:\config\java\bin\server\jvm.dll'.
Please install or use the JRE or JDK that contains these missing components.
我刚刚执行了 jdk-8u301-windows-x64.exe,并安装了 jdk/javaSE。当我尝试在win shell中使用'java'指令时,发现了这样的消息。
我的jdk地址是D:\config\jdk,而D:\config\java是给javaSE的。
我的环境变量设置也是
JAVA_HOME: D:\config\jdk
为什么“java”指令指向我的 java SE 地址?我怎样才能把它改回来? —————————————————————————————————————————
我卸载了这两个文件夹,然后重新安装了它们。 java文件夹中的程序现在有../server/,指令可以成功运行。似乎在上次安装时错过了它。更重要的是,我看了安装步骤,发现我认为是Java SE的文件夹实际上是jre。
但是,我还是很疑惑,为什么java指令搜索文件在jre文件夹,而不是我写在JAVA_HOME的文件夹...
———————————————————————————————————————
在我问这个问题之前,我使用了“where java”指令。所有的结果都和我刚才用的一样:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
D:\config\jdk\bin\java.exe
D:\config\jdk\jre\bin\java.exe
我的步骤与我大学期间所学的完全一致:设置 JAVA_HOME、CLASS_PATH 和最后
path: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
是的,我在阅读步骤后知道第二个文件夹是 jre:它是由执行文件插入的。奇怪的是其中的“java”指令搜索文件,但不在 D:\config\jdk\jre\bin\ 中。
【问题讨论】:
-
看来你写的不是你的意思。术语“JavaSE”代表“Java 标准版”,JDK 是 JavaSE。也许,您的意思是 JRE,但由于 JDK 包含 JRE,因此没有理由安装 JDK 和 JRE。此外,
JAVA_HOME变量完全不相关。 JDK 或 JRE 中没有使用该变量。重要的是您的PATH变量,或者换句话说,当您键入java而没有预先添加路径时,将使用哪个实际的java.exe文件。 -
你命名了三个位置,但是当你在命令行输入
java时,只能加载一个。列表中的第一个是启动器,它将使用 Windows 注册表查找要使用的安装。您可以使用 Java 控制面板来更改该设置。但那是骑着死马。 Java 8 之后的版本不再使用这些东西。您能做的最好的事情就是卸载 JRE。这也应该删除C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe启动器。然后,输入java应该会根据您发布的PATH找到二进制文件并且工作正常。 -
酷。它有效。
标签: java shell java-8 environment-variables