3

我正在处理这里的示例:

http://www.vogella.com/articles/JavaPDF/article.html

在我的文件中,我有:

package com.mycompanyname.mydirectory;

import com.mycompanyname.OneOfMyClasses;
import com.itextpdf.text.Document;
...

 public class MyClass {
     ...
 }

一切正常。我不明白的是,因为我刚刚从上面的链接中直接复制了 iText 部分的导入语句——为什么会com.itextpdf.text.Document起作用?

我的意思是,如果我查看目录,com.mycompanyname我可以在OneOfMyClasses.java那里看到。

但是com直接,没有itextpdf目录(尽管我的用户可能没有查看它的权限(?))。

希望有人可以帮助我了解我在这里缺少什么。导入不是指向我应该能够看到该类的特定目录吗?comiText 正在使用的某个地方是否有不同的目录,并com.itextpdf.text指向那里?(如果是,目录在哪里)?

lib我像往常一样在文件夹中安装了 iText 的 jar 文件,并确保它包含在类路径中。

4

4 回答 4

7

这些类位于添加到类路径的 JAR 文件中:

使用包“de.vogella.itext.write”创建一个新的 Java 项目“de.vogella.itext.write”。创建一个文件夹“lib”并将iText 库(jar 文件)放入此文件夹。将 jar 添加到您的类路径中。

import 语句将查看类路径中的任何目录树,其中包括编译时的当前目录(通常是项目中的 src/ 目录)以及通过环境变量或 JVM 启动参数指定的任何目录。请参阅有关类路径的内容。

编辑

每当您跨包使用类时,您确实需要导入。您定义的每个公共类/接口都在一个包中。如果您引用的任何内容属于另一个包,则需要导入它。

JAR 是 zip 文件,其中包含目录和文件。它与普通目录和文件相同,只是打包。

于 2013-06-25T23:53:01.073 回答
1

它来自您在前面步骤中添加的 iText 依赖项 (jar)。

于 2013-06-25T23:53:18.000 回答
1

不一定 - 您也可以从库等中导入。

事实上,Java 会尝试通过classpath进行搜索。这是一些有用的文档

于 2013-06-25T23:53:32.757 回答
1

该类很可能是在JAR库中导入的。在此类 JAR 文件中,类文件保存在您在导入它们时使用的完全相同的包/文件夹结构中。

于 2013-06-25T23:54:17.227 回答