为什么javac可以在这种情况下编译

时间:2013-01-30 13:54:45

标签: java javac

我的环境是Windows 7和JDK 1.7。

设置CLASSPATH环境变量; echo %CLASSPATH%不输出任何内容。

Java编译器:C:\Program Files\Java\jdk1.7.0_10\bin
Java源代码:位于D:\tmpmulu\Tj.java

我运行如下命令:

C:\>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp d:\tmpmulu\ d:\tmpmulu\Tj.java

有效。该命令设置类路径并编译文件。

但当我更改命令以使用.而不是d:\tmpmulu\作为我的类路径时:

C:\>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp . d:\tmpmulu\Tj.java

也没关系。

让我感到困惑。 .表示当前路径,应为c:\。它是如何成功运行的?

另一个问题是如下命令:

C:\>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp d:\tmpmulu\ Tj.java

按照我的想法,类路径设置为d:\tmpmulu\,它应该找到Tj.java文件。但结果是'找不到文件Tj.java'。

谁能告诉我详情?

2 个答案:

答案 0 :(得分:3)

嗯,大概是你的代码基本上不依赖于类路径中的任何东西。如果使用JDK中的类,那就绝对没问题了。

请注意,类路径仅用于查找类文件 - 而不是源代码。这解释了当源路径不在类路径上时缺少失败,然后当您尝试使用类路径找到Tj.java时失败。

答案 1 :(得分:0)

首先,如果您使用 javac -cp进行编译。 myClass.java ,你可以省略-cp。完全,因为它是默认的类路径。 其次,当您需要指定对标准JDK库中未包含的其他JAR文件的引用时,应使用 -cp ,例如jdbc连接器。如果您的课程不需要任何其他库,那么您告诉 javac 查看哪个目录并不重要。