我计划成为一名经过认证的Java程序员,并且正在从Sierra-Bates的书中学习。我对类路径有疑问。类路径是否只需要找到我正在运行/编译的类的支持类,或者支持类和类本身?另外,当我从类路径中获取包中的类时,将文件的地址(它的路径)放在一起是合法的,而不是放置它的根包。感谢。
答案 0 :(得分:1)
1 - 类路径必须允许访问需要在程序中运行的每个类。这将包括主类和它调用的任何类以及它们调用的类。如果其中一个类中有一些从未调用的代码,在许多情况下,您不需要使用未调用代码引用的类。
2 - 你必须将包的根目录放在类路径中。因此,类“com.bob.myprog.Main”需要将类路径指向“com”包/文件夹所在的文件夹。它需要包含一个“bob”文件夹,“bob”需要包含一个带有“Main.class”的“myprog”文件夹。
答案 1 :(得分:0)
Classpath必须包含支持类和类本身。
但是,有时您可以在不指定classpath的情况下运行单个文件(并且它可以工作)。 正如http://docs.oracle.com/javase/tutorial/essential/environment/paths.html中所述:
类路径的默认值是“。”,表示只有 搜索当前目录。指定CLASSPATH 变量或-cp命令行开关会覆盖此值。
因此,如果您在当前目录中编译了一个MyClass类,则以下内容将起作用:
java MyClass
将classpath指向另一个目录会导致错误(classpath不再包含MyClass):
java -cp lib MyClass
如果包中有类,则将该地址放在类路径中的类文件中是不够的。根据SCJP Sun认证程序员Java 5学习指南:
为了在包中找到一个类,你必须有一个目录 你的类路径有包的最左边的条目(包的 “root”)作为子目录。