我确定我错过了一些东西,但我根本没有看到它。
我正在使用 iText 创建 PDF,我想在 bean 中执行此操作。我已经创建了一个,但它一直在出错。我通常在 Java 中使用的一些方法似乎在这个 bean 中不起作用。
例如,这一行:
com.itextpdf.text.Document document1 = new com.itextpdf.text.Document();
将抛出错误 java.lang.NoClassDefFoundError: com.itextpdf.text.Document,即使在构建路径中导入了 jar,并且在 bean 中导入了 com.itextpdf.text.Document。
如果你把它改成这样:
com.itextpdf.text.Document document1;
或者
com.itextpdf.text.Document document1 = null;
错误消失了。我不明白为什么一种方法有效而另一种方法无效,但这是一个相当容易做出的改变。
现在我需要设置页面大小。这将在 Eclipse 中工作:
document1.setPageSize(PageSize.LETTER);
但这是我得到的错误:
java.lang.NoClassDefFoundError: com.itextpdf.text.PageSize
这可能是因为我已将其设置为 null 以对其进行初始化。但
document1 = new Document();
和
document1 = new com.itextpdf.text.Document();
都抛出 java.lang.NoClassDefFoundError: com.itextpdf.text.Document
奇怪的是,(iText)文档的导入语句警告我它从未使用过。
document1.open();
也会给出错误 java.lang.NoClassDefFoundError: com.itextpdf.text.Document 。
那么,我是否在 bean 的语法中遗漏了一些东西?我已经创建了可以工作的 Notes Java 代理、XAgent 和直接 Java Eclipse 项目,但是我无法让这些方法在 8.5.3 Java Bean 中工作。我将 iText jar 导入到 WebContent\WEB-INF\lib 中,然后将这些(通过添加 jar,而不是添加外部 jar)添加到构建路径中。我已经得到了最新的 jars 并且我正在使用它们,我已经构建和清理过,bean 在 faces-config 中。但是我做错了什么,我看不到。
如果有人能指出我正确的方向,我将不胜感激。
干杯,布赖恩
编辑:许可证不是问题,但即使使用类加载器我仍然无法加载类:
Thread currentThread = Thread.currentThread();
ClassLoader clCurrent = currentThread.getContextClassLoader();
//ClassLoader clCurrent=com.ibm.domino.xsp.module.nsf.NotesContext.getCurrent().getModule().getModuleClassLoader();
try {
currentThread.setContextClassLoader(Activator.class.getClassLoader());
DebugToolbar.get().info("after setting up FileOutputStream");
com.itextpdf.text.Document document1 = new com.itextpdf.text.Document();
//com.itextpdf.text.Document document1;
//com.itextpdf.text.Document document1 = null;
//document1 = new com.itextpdf.text.Document();
//document1.open();
document1.setPageSize(PageSize.LETTER);
我仍然得到 java.lang.NoClassDefFoundError: com.itextpdf.text.Document
我已经把豆子切掉了,清理了,建造了,贴回去了,清理了建造,仍然是错误。
我感谢您的帮助。布赖恩