-cp ./为什么运行Java时,我总是必须手动将CWD包含到CP中?
问题描述:
我从来没有使用过有这个问题,当我去运行Java程序(在终端),我就简单的说,-cp ./为什么运行Java时,我总是必须手动将CWD包含到CP中?
java className
,程序将运行。但最近,当我尝试这个,我得到的错误,
找不到或无法加载主类的className
为了解决这个问题我已经加入-cp ./
我curring工作目录到classpath,然后程序运行。我不知道该怎么添加到我的环境变量,使当前的工作目录将总是是这样就避免了这种长脚本类路径上,
java -cp ./ className
根据this计算器发布Oracle的标准执行首先在当前工作目录中查找类名。
(我使用Java 8和Windows 8.1)
答
类路径,如果没有在命令行中发现,并在CLASSPATH
环境变量,defaults to the current directory没有找到。
-cp类路径
指定要搜索的类文件的目录,JAR文件和ZIP压缩文件的列表。单独的类路径项用分号(;)
指定-classpath或-cp覆盖CLASSPATH环境变量的任何设置。
如果-classpath和-cp未使用,CLASSPATH没有设置,则用户类路径由当前目录的(。)。
如果指定-cp
,则必须明确包括.
在类路径(当前目录),否则将不被包括在内。
如果不使用-cp
不工作,但明确说明-cp .
做的工作,那么你必须定义CLASSPATH
环境变量,它必须没有明确包括.
。这可以解释为什么覆盖CLASSPATH
包括.
与-cp
选项的作品。
我只指定'-cp',这样我就可以包含'.'。我得到的是我怎么才能回到简单地使用'java className'运行,因为从现在开始,我的程序运行的唯一方式是使用'java -cp ./ className' – 2014-09-13 00:09:13
你有'CLASSPATH定义了环境变量?也许你会这样做,但'.'不在'CLASSPATH'中。这就可以解释为什么'-cp'不起作用,但是'-cp .'确实起作用。 – rgettman 2014-09-13 00:11:09
我是个白痴,我没有意识到我可以在'CLASSPATH'的环境变量中添加'。/'。谢谢你解决问题。 – 2014-09-13 00:14:20