3

我下载itext-1.3并放入 .lib 文件夹中jdk 1.6.0。并将 lib 文件夹添加为系统变量中的 CLASSPATH。

但是当我运行程序时,我得到了错误:

包 com.itextpdf.text 不存在。

对于所有其他软件包也是如此。我犯了什么错误?

import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * First iText example: Hello World.
 */
public class HelloWorld {

    /** Path to the resulting PDF file. */
    public static final String RESULT
        = "E:/hello.pdf";

    /**
     * Creates a PDF file: hello.pdf
     * @param    args    no arguments needed
     */
    public static void main(String[] args)
        throws DocumentException, IOException {
        new HelloWorld().createPdf(RESULT);
    }

    /**
     * Creates a PDF document.
     * @param filename the path to the new PDF document
     * @throws    DocumentException 
     * @throws    IOException 
     */
    public void createPdf(String filename)
    throws DocumentException, IOException {
        // step 1
        Document document = new Document();
        // step 2
        PdfWriter.getInstance(document, new FileOutputStream(filename));
        // step 3
        document.open();
        // step 4
        document.add(new Paragraph("Hello World!"));
        // step 5
        document.close();
    }
}
4

3 回答 3

8

除非您明确指示这样做,否则不应向 JVM/JDK lib 或 ext 文件夹添加任何内容

根据您的开发环境(以及您未来的意图),您应该将库放置在最适合它的位置,例如,在项目文件夹内的 lib 目录中(但在源代码之外)。

您应该在项目 Jar 清单中添加类路径依赖项(查看将类添加到 JAR 文件的 Classpath)或使用-cp命令行上的参数来执行程序。您应该使用 javac 的 -classpath 选项来编译程序

至于开发环境,这取决于您使用的是什么

特别说明

每个 Jar 文件都需要在 Classpath 上单独引用,您不能指定文件夹并期望 JVM 扫描其内容以查找 Jar 文件,仅适用于类

更新了编译执行示例

我下载 iText 5.3.1。从我提取的 zip 文件中:

  • itextpdf-5.3.1.jar
  • itext-pdfa-5.3.1.jar
  • itext-xtra-5.3.1.jar

并将它们放置在容易到达的位置。

我从 iText in Action 网站下载了HelloWorld 示例。我把它放在src与 Jar 相同位置的目录中

我修改了代码,以便在当前工作目录中创建生成的 PDF

public static final String RESULT = "hello.pdf";

我用javac.exe -cp d:\hold\itextpdf-5.3.1.jar;d:\hold\itext-pdfa-5.3.1.jar;d:\hold\itext-xtra-5.3.1.jar -d . src\HelloWorld.java(compiled in d:\hold)编译了这个例子

这在 part1\chapter01 中创建了 HelloWorld 类D:\hold

然后我执行了这个例子java -cp d:\hold\itextpdf-5.3.1.jar;d:\hold\itext-pdfa-5.3.1.jar;d:\hold\itext-xtra-5.3.1.jar;d:\hold part1.chapter01.HelloWorld

这导致在hello.pdf当前目录中创建 ( D:\hold)

于 2012-08-05T06:51:09.513 回答
1

不需要对 jdk 库做任何事情。只需使用类路径将 itext jar 文件的路径提供给 java。

我也遇到了同样的问题,但有 itext 5.5.3。就我而言,我创建了一个与我的工作文件夹并行的lib文件夹。在lib文件夹中,我放置了所有三个 jar 文件(itextpdf-5.5.3.jar、itext-pdfa-5.5.3.jar、itext-xtra-5.5.3.jar)。 不要浪费时间在编译运行代码的时候分别给出每个jar文件的路径。

我编译了代码 eg1.java(c:\ItextPractise\code\eg1.java) 与

javac -classpath c:\ItextPractise\lib\*;. eg1.java

并使用

java -classpath c:\ItextPractise\lib\*;. eg1(在我的例子中,eg1 是主类的名称)

您可能会从OracleOfficialPage了解更多关于类路径的信息。

于 2019-07-24T21:01:41.783 回答
-1

这可能是由于您的项目中缺少 itext 库。只需下载 itext jar 文件并将其添加到您的项目库中

于 2015-11-21T17:25:06.887 回答