看看这个:YouTube 视频参考
这里,cmd 在使用 Java 时可以正常工作,但使用 Powershell 时不行。为什么会这样,如何让 Powershell 使用它?
更新(添加命令和输出,因此您可以跳过观看视频)
命令:
C:\Users\reesh\Desktop\Java>javac MyFirstJavaProgram.java
C:\Users\reesh\Desktop\Java>java MyFirstJavaProgram
Hello World
C:\Users\reesh\Desktop\Java>
电源外壳:
PS C:\Users\reesh\Desktop\Java> javac .\MyFirstJavaProgram.java
PS C:\Users\reesh\Desktop\Java> java .\MyFirstJavaProgram
Error: Could not find or load main class .\MyFirstJavaProgram
Caused by: java.lang.ClassNotFoundException: /\MyFirstJavaProgram
PS C:\Users\reesh\Desktop\Java>
换句话说,PS 给出错误,而 cmd 没有。
答案1
默认情况下,Powershell 具有安全配置,当您尝试仅通过提供名称来运行程序时,它不会像 cmd 那样搜索当前文件夹。相反,它只会搜索您的 PATH 变量。
因此,第一个修复方法是将javac
其改为./javac
。其次,当您写入 时.\MyFirstJavaProgram
,Java 似乎无法读取文件名。请尝试将其改为正斜杠./MyFirstJavaProgram
。
最终命令./java.c ./MyFirstJavaProgram
。尽管我想强调这一点,但您不需要./
MyFirstJavaProgram 因为它是一个参数,而不是脚本或可执行文件。
答案2
您没有在两者中运行相同的命令。
在命令 shell 中,你运行java MyFirstJavaProgram
在 PowerShell 中,你运行java .\MyFirstJavaProgram
如果您运行了相同的命令,它就会起作用。这与您是否从 PowerShell 运行无关。问题是 Java 希望您为其提供类名。类名不是.\MyFirstJavaProgram
- 类名是MyFirstJavaProgram
。
.java
您可以从文件内部所写的内容中获取类名class MyFirstJavaProgram
。