2016-06-11 40 views
1

解決itext 7代碼的第一個示例會導致第4步出現NoClassDefFoundError。 如果任何人都可以指出錯誤來自哪裏會有幫助嗎?iText 7 Hello World示例失敗,出現NoClassDefFoundError錯誤

import com.itextpdf.kernel.pdf.PdfWriter 
import com.itextpdf.kernel.pdf.PdfDocument 
import com.itextpdf.layout.Document 
import com.itextpdf.layout.element.Paragraph 

//step 1 - writer 
writer = new PdfWriter(new FileOutputStream(DEST)) 
//step 2 - PDF 
pdf = new PdfDocument(writer) 
//step 3 - document 
document = new Document(pdf) 
//step 4 - content 
document.add(new Paragraph ('Hello World!')) 

這產生

java.lang.NoClassDefFoundError: Could not initialize class com.itextpdf.io.font.FontProgramFactory 

代碼被Groovy的下運行這就是爲什麼它是稍微更稀疏 的IO,內核和佈局罐子被加載。

回答

2

您是否觀看了關於如何安裝iText 7的視頻?錯誤消息告訴你,你沒有包含IO jar。我的假設是你已經添加了內核和佈局jar到你的CLASSPATH,但是你忽略了添加io jar。

這些都是一些在跳轉入門教程的Before we start: installing iText 7部分記錄的依賴關係:

<dependency> 
    <groupId>com.itextpdf</groupId> 
    <artifactId>kernel</artifactId> 
    <version>7.0.0</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>com.itextpdf</groupId> 
    <artifactId>io</artifactId> 
    <version>7.0.0</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>com.itextpdf</groupId> 
    <artifactId>layout</artifactId> 
    <version>7.0.0</version> 
    <scope>compile</scope> 
</dependency> 

正如影片所解釋的,IO罐子是內核罐子的依賴。

你寫:

的IO,內核和佈局罐子被加載。

您共享的錯誤消息告訴我IO jar沒有加載。 com.itextpdf.io.font.FontProgramFactory類存儲在這個jar中。

+0

我有,他們是... –

+0

@johnrenfrew錯誤消息告訴我,否則。錯誤信息是錯誤的,或者你是。作爲一名開發人員,我更相信錯誤消息告訴我的是什麼,而不是人類所說的。我甚至相信錯誤信息比我認爲的更多。 –

+0

這個錯誤確實是我的,但不是你的想法,SL​​F4J依賴於我在示例的底部遺漏了,因爲我想如果你使用IDE,假設它被加載,我們不是......我不確定爲什麼包括它使得錯誤消失儘管.. –