classpath不默认为当前目录

我用Java编写并编译了一个简单的Hello World程序但是当我尝试运行它时,我遇到了错误消息Error: Could not find or load main class Hello 。 它只是在我执行命令java -cp . Hello java -cp . Hello ,它成功运行了。

奇怪的是,当前目录似乎已经成为类路径的一部分。 剧本

 class CheckClassPath{ public static void main(String args[]){ System.out.println(System.getProperty("java.class.path")); } } 

打印. ,虽然我再次必须显式设置classpath选项。

有谁知道为什么会这样? 我使用的是Ubuntu 16.04和open-JDK 1.8版。

我希望已经设置了CLASSPATH环境变量。 运行echo $CLASSPATH以查看它的设置。

如果您不使用-jar选项,则:

  • 如果有-cp ,则指定类路径
  • 否则,如果在环境中设置了CLASSPATH ,则指定类路径
  • 否则默认类路径为“。” 用来。