Java可以在命令提示符(cmd)中运行,但在PowerShell中无法运行。

3

我刚刚将java文件夹添加到我的环境变量中。当我尝试在Windows命令行(cmd)中执行javac HelloWorld.javajava HelloWorld时,它可以正常执行。但是如果我打开Windows PowerShell并执行相同的操作,它会提示:

javac : The term 'javac' is not recognized as the name of a cmdlet, function, script file, or operable program. Check t
he spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ javac HelloWorld.java
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (javac:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

此外,如果我在命令提示符中编译HelloWorld.java,则可以从PowerShell运行java HelloWorld

我该如何在PowerShell中执行javac?


看起来是重复的问题,为什么不在发布之前搜索SO https://dev59.com/nWQn5IYBdhLWcg3we28E - ares777
我看了那个问题,对我没有帮助。我已经将JRE文件夹添加到我的路径环境变量中了。 - Lewistrick
请在PowerShell中显示$env:path的内容。同时在cmd中使用echo %path%显示。 - ares777
我看到:在ps中$env:path不包含java文件夹,而在cmd中的echo %path%包含。前者的列表更长,但确实包含这个:C:\ProgramData\Oracle\Java\javapath,这是一个包含指向jre目录中文件的快捷方式的文件夹。 - Lewistrick
3个回答

3

在PowerShell中验证$env:path所得到的内容。同样,在cmd中打印%path%。 如果javapath不包含在PowerShell路径中,请确保正确添加。


1
重新安装Java(相同版本/安装程序)解决了我的问题。无需重新启动计算机。

你最终安装了不同的版本还是完全相同的版本? - Brett

1
您的 PATH 中的 JDK 条目可能在引号中。 我曾经遇到过同样的问题,运行 PowerShell 中的 `$env:Path` 命令会输出如下内容:
C:\Program Files\FooBar;"C:\Program Files\Java\jdk1.8.0_92\bin";C:\Program Files (x86)\Example\whatever;...

请注意,JDK条目用引号括起来,而其他条目则没有。显然,cmd可以处理此问题,但PowerShell不行。
如何修复:
1. 打开系统环境变量编辑器,找到列表中的PATH变量。 2. 单击“编辑...”,会弹出一个列表编辑器。请注意,在那里JDK条目没有用引号列出,因此我们需要编辑原始文本。 3. 单击“编辑文本...”以获取原始文本的编辑器,删除其中的引号并保存所有内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接