当我在windows CMD的同一个文件夹中时,为什么我必须为我的.class文件指定Java类路径?

当我在windows CMD的同一个文件夹中时,为什么我必须为我的.class文件指定Java类路径?,java,windows,command-line,Java,Windows,Command Line,我在文件夹中有一个简单的“test.java”。我在包含“test.java”的文件夹下,该文件夹已经运行了“javactest.java”。创建一个“test.class”文件 但是当我尝试运行“javac测试””时,我的环境总是返回 错误:无法找到或加载主类测试 除非我键入java-cp。test获取执行test.class文件的java 为什么? 谢谢。你自己回答了问题 当你这样做的时候 java test 那么当前目录不在类路径中 因此,当您使用-cp.时,它会工作(正如上面所说:将“

我在文件夹中有一个简单的“test.java”。我在包含“test.java”的文件夹下,该文件夹已经运行了“
javactest.java
”。创建一个“test.class”文件

但是当我尝试运行“
javac测试”
”时,我的环境总是返回

错误:无法找到或加载主类测试

除非我键入
java-cp。test
获取执行test.class文件的java

为什么?


谢谢。

你自己回答了问题

当你这样做的时候

java test
那么当前目录不在类路径中

因此,当您使用
-cp.
时,它会工作(正如上面所说:将“.”aka“当前目录添加到当前类路径中)

另一方面,默认情况下,“.”应位于默认类路径中(请参阅)

因此,有两种解释:

  • 如前所述,文件名周围出现了一些微妙的小问题
  • 您的环境实际上设置了一个classpath ENV变量;该变量不包括“”

因为默认情况下当前目录不包括在类路径中。@kayaman,是的,但在Windows上当前目录应作为默认目录包括在内,我刚刚发现我的env var类路径设置为不同的值。@GhostCat,接受。谢谢。我同意这个答案——如果要使用它,请注意命令行选项n选项包括一个句点:
-cp.
;句点表示当前目录。感谢您的输入;我更新了关于该方面的答案;因此,您的协议可能会显示为upvote;-)谢谢您的GhostCat。第二个解释是原因-Windows上的我的开发环境变量以某种方式设置为“类路径”=(some/folder)”,导致Java查找该文件夹而不是当前工作目录。现在我删除了它,并且“Java测试”工作正常。注意。谢谢@arcy。