CMD 和 Powershell 在构建和运行 Java 文件时的工作方式不同

CMD 和 Powershell 在构建和运行 Java 文件时的工作方式不同

看看这个: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

相关内容