Windows更新后我无法编译Java文件! (PowerShell替换了命令提示符。)

时间:2017-07-13 03:36:35

标签: powershell javac windows-update

在Windows更新期间,PowerShell替换文件菜单中的命令提示符后,我无法编译任何Java程序。我尝试使用与命令提示符(SET PATH)相同的set path = c:\"Program Files"\Java\jdk1.8.0_102\bin命令。 java命令有效,但无法识别javac

在学习如何访问命令提示符(键入" CMD"在左下角的搜索框中)之后,我认为一切都会正常工作 - 但我错了。 javac命令看起来有效。它在我第一次尝试编译时标记了错误。修复错误后,我以为我有一个无错编译。当我试图运行我的"新编译的"程序,我注意到我的新变化没有显示!我发现 - 尽管它似乎在编译 - 但没有创建新的CLASS文件。 (这是正在运行的旧CLASS文件。)

然后建议我确保我是管理员。我做了 - 使用PowerShell和命令提示符 - 但它没有任何区别。

我尝试重新安装Java - 但这也没有任何区别。

以下是从命令提示符编译为管理员时发生的情况:

C:\Users\penny\Java>Set Path=C:\"Program Files"\Java\jdk1.8.0_131\bin

C:\Users\penny\Java>javac FoodCount.java

C:\Users\penny\Java>java FoodCount
Error: Could not find or load main class FoodCount

它编译(或似乎),但没有创建类文件。是的,javac.exe文件位于bin文件中:

C:\Program Files\Java\jdk1.8.0_131\bin>dir javac.exe
 Volume in drive C is Windows
 Volume Serial Number is 7040-4F22

 Directory of C:\Program Files\Java\jdk1.8.0_131\bin

07/12/2017  11:48 PM            15,904 javac.exe
               1 File(s)         15,904 bytes
               0 Dir(s)  838,527,008,768 bytes free

当我使用PowerShell的一条评论中的建议时,会发生这种情况。 (这是在我重新安装Java之前,因此版本有点不同。重新安装后,结果完全相同。)

PS C:\Users\penny\Java> $env:PATH += ';c:\Program 
Files\Java\jdk1.8.0_102\bin'
PS C:\Users\penny\Java> javac FoodCount.java
javac : The term 'javac' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the 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 FoodCount.java
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (javac:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
PS C:\Users\penny\Java>

总而言之,我似乎能够从命令提示符处使用javac.exe进行编译,但之后在我的目录中找不到新的类文件。我无法让PowerShell识别javac.exe。

谁能告诉我发生了什么事?我认为必须对权限进行处理,但是管理员似乎还不够。

1 个答案:

答案 0 :(得分:0)

我认为Windows使用另一个自动更新/补丁修复了这个“错误”!

当我今天尝试从命令提示符编译时,它工作了!保存了一个类文件,我可以运行它。昨天,编译器(javac.exe)似乎从命令提示符开始工作,但没有创建新的类文件。我不知道为什么它今天的表现会有所不同 - 除非Windows更新解决了这个问题。

我仍然无法在PowerShell中运行javac.exe,但我不知道我在那里做什么。

如果其他人有这个问题,我的建议是耐心。如果你等,它可能会消失!