我从来没有遇到过这个问题,当我去运行Java程序(在终端中)时,我只想说,
java className
程序将运行。但是最近当我尝试这个时,我得到了错误,
无法找到或加载主类className
要解决此问题,我已将-cp ./
我的工作目录添加到类路径中,然后程序运行。我不确定要添加到我的环境变量中的内容,以便当前工作目录总是在类路径上,从而避免使用这个更长的脚本,
java -cp ./ className
根据this StackOverflow帖子,Oracle的标准实现首先在当前工作目录中查找类名。
(我使用的是Java 8和Windows 8.1)
答案 0 :(得分:3)
如果在命令行中找不到类路径,但在CLASSPATH
环境变量defaults to the current directory中找不到。
-cp classpath
指定用于搜索类文件的目录,JAR文件和ZIP存档的列表。用分号(;)
分隔类路径条目指定-classpath或-cp会覆盖CLASSPATH环境变量的任何设置。
如果未使用-classpath和-cp且未设置CLASSPATH,则用户类路径由当前目录(。)组成。
如果指定-cp
,则必须在类路径中明确包含.
(当前目录),否则它将不包括在内。
如果不使用-cp
无法正常工作,但明确说明-cp .
确实有效,那么您必须定义CLASSPATH
环境变量,并且不得明确包含{ {1}}。这可以解释为什么通过将.
与CLASSPATH
选项包括在一起来覆盖.
。