2014-09-13 67 views
1

我从来没有使用过有这个问题,当我去运行Java程序(在终端),我就简单的说,-cp ./为什么运行Java时,我总是必须手动将CWD包含到CP中?

java className 

,程序将运行。但最近,当我尝试这个,我得到的错误,

找不到或无法加载主类的className

为了解决这个问题我已经加入-cp ./我curring工作目录到classpath,然后程序运行。我不知道该怎么添加到我的环境变量,使当前的工作目录将总是是这样就避免了这种长脚本类路径上,

java -cp ./ className 

根据this计算器发布Oracle的标准执行首先在当前工作目录中查找类名。

(我使用Java 8和Windows 8.1)

回答

3

类路径,如果没有在命令行中发现,并在CLASSPATH环境变量,defaults to the current directory没有找到。

-cp类路径

指定要搜索的类文件的目录,JAR文件和ZIP压缩文件的列表。单独的类路径项用分号(;)

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

如果-classpath和-cp未使用,CLASSPATH没有设置,则用户类路径由当前目录的(。)。

如果指定-cp,则必须明确包括.在类路径(当前目录),否则将不被包括在内。

如果不使用-cp不工作,但明确说明-cp .做的工作,那么你必须定义CLASSPATH环境变量,它必须没有明确包括.。这可以解释为什么覆盖CLASSPATH包括.-cp选项的作品。

+0

我只指定'-cp',这样我就可以包含'.'。我得到的是我怎么才能回到简单地使用'java className'运行,因为从现在开始,我的程序运行的唯一方式是使用'java -cp ./ className' – 2014-09-13 00:09:13

+1

你有'CLASSPATH定义了环境变量?也许你会这样做,但'.'不在'CLASSPATH'中。这就可以解释为什么'-cp'不起作用,但是'-cp .'确实起作用。 – rgettman 2014-09-13 00:11:09

+0

我是个白痴,我没有意识到我可以在'CLASSPATH'的环境变量中添加'。/'。谢谢你解决问题。 – 2014-09-13 00:14:20