0

我在模拟器 Android 设备中使用 Eclipse,我有以下简单代码:

File file = new File(this.getFilesDir() + "/example.pdf");
if(!file.exists())
file.createNewFile();
FileOutputStream fop = new FileOutputStream(file);
Document document = new Document();
(…)  

因为我这样做了,Document document = new Document(); 所以我得到了错误:

Java.lang.NoClassDefFoundError:com.itextpdf.text.Document

我有这样的itext.jar:

<classpath>
<classpathentry kind="lib" path="assets/itext-pdfa-5.4.0.jar"/>
<classpathentry kind="lib" path="assets/itext-xtra-5.4.0.jar"/>
<classpathentry kind="lib" path="assets/itextpdf-5.4.0.jar"/>
<classpathentry kind="lib" path="assets/itext-pdfa-5.4.0-javadoc.jar"/>
<classpathentry kind="lib" path="assets/itext-pdfa-5.4.0-sources.jar"/>
<classpathentry kind="lib" path="assets/itext-xtra-5.4.0-javadoc.jar"/>
<classpathentry kind="lib" path="assets/itext-xtra-5.4.0-sources.jar"/>
<classpathentry kind="lib" path="assets/itextpdf-5.4.0-javadoc.jar"/>
<classpathentry kind="lib" path="assets/itextpdf-5.4.0-sources.jar"/>
</classpath>

所有这些都在“资产”路径中。

4

2 回答 2

0

如果您使用的是 Android,最好使用Android 端口。此端口用于我们所有的 Android 演示。与纯 Java iText 版本的区别是:

  1. 不使用 AWT,nio,... 任何类,
  2. 使用 SpongyCastle 而不是 BouncyCastle 来避免在 Android 上使用 BC 的已知问题,
  3. 删除无论如何都不能在 Android 上运行的类。

请注意, aNoClassDefFoundError不仅在找不到类时发生。在你的情况下:类就在那里:只需检查 jar。当存在歧义时,也会抛出这样的错误。例如:因为您的 CLASSPATH 中有两个版本的 iText。如果我是你,我会删除所有对 iText 的引用,然后从 iText 的 Android 端口重新开始。我很确定您的 CLASSPATH 中有太多条目。

于 2013-03-18T18:21:16.583 回答
0

根据您的错误:

Java.lang.NoClassDefFoundError: com.itextpdf.text.Document

看起来你导入了错误的Document类。

试试这个导入:

import org.w3c.dom.Document;
于 2013-03-18T13:13:27.670 回答