在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。
谁能告诉我发生了什么事?我认为必须对权限进行处理,但是管理员似乎还不够。
答案 0 :(得分:0)
我认为Windows使用另一个自动更新/补丁修复了这个“错误”!
当我今天尝试从命令提示符编译时,它工作了!保存了一个类文件,我可以运行它。昨天,编译器(javac.exe)似乎从命令提示符开始工作,但没有创建新的类文件。我不知道为什么它今天的表现会有所不同 - 除非Windows更新解决了这个问题。
我仍然无法在PowerShell中运行javac.exe,但我不知道我在那里做什么。
如果其他人有这个问题,我的建议是耐心。如果你等,它可能会消失!