2012-03-12 66 views
0

假设我刚刚创建了一个包“example”,并在其中有两个类,“Main”和“Helper”。有关Java CLASSPATH的基本问题

使用最简单的编译方式(例如$ javac Main.java Helper.java),只要我位于包含示例包的目录中,就可以通过在命令行中键入以下命令来运行它:

$java example.Main 

问题:

  1. 我为什么要设置的给定我已经可以运行程序的CLASSPATH?我猜测能够从我的机器上的任何目录键入“$ java example.Main”,但我不确定。

  2. 当我在命令行中键入“java -cp/path/to/your/java/class/file Main”会发生什么?现在我想知道包含所有不同类路径的文件,并且该命令将仅添加另一个类路径。是这样吗?

  3. 在命令行上使用“CLASSPATH =/path/to/your/java/class/file”和“java -cp/path/to/your/java/class/file Main” ?第二个人到底怎么会有班级的名字(即Main)?

回答

1
  1. 是的,差不多。当然,这假设你有路径javaPATH可变
  2. -cp或-classpath增加了它在前面的选项(字符串)无论是在你的CLASSPATH
  3. 是的,是有区别的。使用CLASSPATH通常更方便,因为您倾向于设置CLASSPATH一次。从此,java Main足以执行主类。用java -cp /path/to/your/java/class/file Main,你必须每次输入-cp /path/to/your/java/class/file

话虽这么说,无论CLASSPATH-cp-classpath选项通常包含指向包含你的程序,而不是你的程序本身的目录中使用的Java库目录中的条目。

+0

1.不完全正确。从不同的目录中,他将不得不设置他的类路径,因为如果没有其他指定,classpath将被假定为当前工作目录。 – Sandro 2012-03-12 23:53:15

+0

哎呀,非常感谢。 – 2012-03-12 23:53:51

+0

我的印象是这个问题是“我为什么要设置CLASSPATH变量?所以我可以从我的系统上的任何目录运行程序?”在那种情况下,'CLASSPATH'将被设置。 – len 2012-03-12 23:56:30