什么时候应该设置类路径?

时间:2015-09-23 22:51:45

标签: java classpath

public class a {
public static void main(String[] args) {
    System.out.println("Hello, World");
    }
}

对于上面的代码,我可以通过javac a.java运行它,然后运行java a。

但如果我为它添加一个包:

package hello;
public class a {
public static void main(String[] args) {
    System.out.println("Hello, World");
    }
}

我需要添加classpath -cp才能运行它:java -cp ../ hello.a

为什么我不需要在第一种情况下设置类路径?我什么时候需要添加-cp?

3 个答案:

答案 0 :(得分:1)

类路径是java(程序)查找类的地方。默认包含一系列系统范围的内容(对于JDK),然后是当前目录:.

没有package行,您的类位于“默认包”中,基本上没有包。这意味着它的全名是a(或多或少),并且java将在类路径中的每个元素CP_ELEM的名为$CP_ELEM/a.class的文件中查找它。在默认情况下,这相当于./a.class,这很好,因为该文件存在。

使用package行,您的班级位于hello包中,其全名为hello.a。这意味着java将在$CP_ELEM/hello/a.class中查找它,相当于./hello/a.class - 它不存在。但是如果你所在的目录恰好被称为“你好”,那么java -cp .. hello.a相当于../hello/a.class,那么它将起作用。

答案 1 :(得分:1)

回答你的问题

  

我应该何时设置课程路径

始终当您处理更复杂的项目时,您会发现几乎总是需要设置类路径。这可以像使用-cp命令一样手动完成,也可以由IDE完成。

回答你的第二个问题

  

为什么我不需要在第一种情况下设置类路径

我首先需要解释一下类路径。简而言之,存在告诉VM在哪里查找文件的类路径。在第一种情况下,由于您没有包,因此使用默认位置来查找您的类,因此不需要类路径。但是,当你复杂化并在此时添加一个包时,需要一个类路径

答案 2 :(得分:1)

Classpath就像告诉系统在哪里找到我的类:
如果你没有类路径,java将尝试加载类
从默认目录(可能是你在哪里运行命令)

现在让我们假设您将已编译的类放在文件夹" bin"和#34; src"文件夹
告诉系统从" bin"加载类。文件夹你必须给他以下参数: -cp bin;


我也看到你不了解java中的包装系统,所以这里快速解释一下:
打包就像你的班级目录,例如:
如果您将类的包设置为package a;,并且您的类路径目录设置为" bin"
你必须创建名为" a"的文件夹。 in" bin"文件夹,然后在那里移动编译的类,对源文件执行相同的操作,但在" src"夹

只是说你可以使用位于http://www.eclipse.org

的eclipse

如果这对您没有帮助,那么请看一下:https://www3.ntu.edu.sg/home/ehchua/programming/java/J9c_PackageClasspath.html

相关问题