-cp./为什么在运行Java时,我总是必须手动将CWD包含到cp中?

-cp./为什么在运行Java时,我总是必须手动将CWD包含到cp中?,java,classpath,working-directory,Java,Classpath,Working Directory,我以前从来没有遇到过这个问题,当我去运行Java程序(在终端中)时,我会简单地说 java className 程序将运行。但是最近当我尝试这个的时候我发现了一个错误 无法找到或加载主类类名 为了解决这个问题,我将-cp./我的当前工作目录添加到类路径中,然后程序运行。我不确定要向我的环境变量添加什么,以便当前工作目录始终位于类路径上,从而避免使用这个较长的脚本 java -cp ./ className 根据StackOverflow post,Oracle的标准实现首先在

我以前从来没有遇到过这个问题,当我去运行Java程序(在终端中)时,我会简单地说

    java className
程序将运行。但是最近当我尝试这个的时候我发现了一个错误

无法找到或加载主类类名

为了解决这个问题,我将
-cp./
我的当前工作目录添加到类路径中,然后程序运行。我不确定要向我的环境变量添加什么,以便当前工作目录始终位于类路径上,从而避免使用这个较长的脚本

    java -cp ./ className
根据StackOverflow post,Oracle的标准实现首先在当前工作目录中查找类名


(我使用的是Java 8和Windows 8.1)

如果在命令行中找不到类路径,并且在
类路径
环境变量中也找不到

-cp类路径

指定要搜索类文件的目录、JAR文件和ZIP存档的列表。用分号(;)分隔类路径项

指定-classpath或-cp将覆盖classpath环境变量的任何设置

如果未使用-classpath和-cp并且未设置classpath,则用户类路径由当前目录(.)组成

如果指定
-cp
,则必须在类路径中明确包含
(当前目录),否则将不包含该目录


如果不使用
-cp
不起作用,但显式声明
-cp.
起作用,则必须定义
类路径
环境变量,并且不能显式包含
。这就解释了为什么通过使用
-cp
选项包含
来覆盖
-CLASSPATH
会起作用。

我只指定
-cp
以便可以包含
。我想说的是,我怎样才能回到使用
java className
运行的状态,因为到目前为止,我的程序运行的唯一方法是使用
java-cp./className
您是否定义了
CLASSPATH
环境变量?可能是这样,但是
不在
类路径中。这就解释了为什么没有
-cp
不起作用,但是
-cp.
起作用。我是个白痴,我没有意识到我可以在
类路径的环境变量中添加
/
。谢谢,问题解决了。你的答案不是说
JavaWTV
java-cp吗。wtv
是否相同?@SotiriosDelimanolis仅当未定义环境变量时。我需要说得更清楚些。。。