Java在cmd中运行,但不在PowerShell中运行

时间:2015-03-11 08:10:29

标签: java powershell cmd environment-variables

我刚刚将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

另外,如果我在cmd中编译HelloWorld.java,则可以从Powershell运行java HelloWorld

如何从Powershell执行javac?

3 个答案:

答案 0 :(得分:2)

验证您从powershell中的$ env:path获得的内容。也来自cmd echo%path% 如果在powershell路径中不包含javapath,请确保正确添加。

答案 1 :(得分:0)

重新安装Java(相同的版本/安装程序)为我修复了这个问题。无需重启。

答案 2 :(得分:0)

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. 点击"编辑文字..."获取原始文本的编辑器,删除那里的引号并保存所有内容。