我確定我錯過了一些東西,但我沒有看到它。從託管的豆中的導入罐子中訪問方法
我使用iText創建PDF,並且我想在bean中執行此操作。我創建了一個,但它一直在出錯。似乎我通常在Java中工作的一些方式在這個bean中似乎不起作用。
例如,該行:
com.itextpdf.text.Document document1 = new com.itextpdf.text.Document();
將拋出錯誤java.lang.NoClassDefFoundError:com.itextpdf.text.Document,即使罐子是進口的,在構建路徑和com.itextpdf .text.Document被導入到bean中。
如果你把它改成這樣:
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。
所以,我錯過豆的語法中的東西?我創建了Notes Java代理,XAgent以及直接運行的Java Eclipse項目,但我無法使這些方法在8.5.3 Java Bean中工作。我將iText jar導入到WebContent \ WEB-INF \ lib中,然後將這些jar文件(通過添加jar,不添加外部jar)添加到構建路徑中。我已經獲得了最新的jar包,並且正在使用它們,我已經構建並清理了這個bean,這個bean位於faces-config中。但是我做錯了什麼,我看不到它。
如果有人能指出我正確的方向,我將非常感激。
乾杯, 布賴恩
編輯: 許可證是沒有問題的,但我還是不能讓類使用ClassLoader加載甚至:
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
我已經把豆子切掉,清理,建造,粘貼回來,清理完成,仍然是錯誤。
我很感謝幫助。 Brian
您可以使用同樣的iText在封閉的應用程序,只需要購買許可證。 – 2013-03-01 08:16:22