java:导入,类路径和包

时间:2011-10-22 03:44:43

标签: java import classpath package

我有一个导入org.w3c.dom.Document的文件。编译和运行很好,但我不明白它是如何知道在哪里找到这个包,我只是好奇它是如何工作的。我使用locate命令尝试找到org.w3c.dom,但我什么都没得到。这些包裹在哪里?在我看来,正确的地方是CLASSPATH环境变量,因为我的搜索结果似乎暗示了这一点。它是否正确?无论如何,我不知道如何找出我的CLASSPATH变量。它似乎不是我的shell知道的环境变量。

3 个答案:

答案 0 :(得分:3)

JVM使用类路径设置查找类,其中设置了所需包的所有路径。可以通过多种方式设置类路径。你提到的第一个是CLASSPATH环境变量。它是可选的,可以取消设置。第二种方法是“java”可执行文件的显式选项“-cp”。

默认情况下,默认情况下会将一些JRE运行时jar添加到类路径中,因此您不需要自己搜索和添加标准包(特别是您在问题中提到的那个)。

答案 1 :(得分:2)

这将是核心库(rt.jar)的一部分,所以它就是你安装java JRE的地方;具体在$JAVA_HOME/jre/lib

您可以使用.jar命令查看jar个文件。要查看您提到的课程,您可以:

jar tvf rt.jar 

这列出了那个jar中的所有类。

请注意,JVM会自动搜索此位置 - 它不需要也不包含在CLASS_PATH环境变量中。 (你可以添加它,但它只是多余的)

为了清晰起见进行编辑:

JVM默认包含<Where_you_installed_jdk>/jre/lib<Where_you_installed_jdk>/jre/lib/ext。您必须通过-cp选项直接将其传递给java或将其添加到CLASS_PATH环境变量,才能显式添加任何其他内容。

可以在http://download.oracle.com/javase/6/docs/technotes/tools/findingclasses.html

找到相关文档

答案 2 :(得分:0)

尝试从它自己的目录

编译这样的messconvener.java

javac -d ..\..\. -cp ..\..\. messconvener.java

-d - 为您的包创建目录结构

-cp - 为用户文件提供类路径,它可以在其中找到用户定义的类

相关问题