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