2011-02-15 339 views
12

我想我的顯示在瀏覽器上的報道,但我不斷收到此錯誤:無法初始化類net.sf.jasperreports.engine.util.JRStyledTextParser

enter image description here

約奇怪的事情這只是當我試圖從安裝在服務器上的版本生成報告時發生,但不是當我通過我的電腦本地執行報告時

您知道爲什麼會發生這種情況嗎?

+3

你在運行什麼樣的服務器?你有沒有檢查Jasper庫是否在你的服務器上?聽起來像你失蹤的人。 – Sean 2011-02-15 01:01:18

回答

4

這是類路徑問題中缺少的jar。

我有這個問題,發現通過將缺少的jar添加到類路徑中,它解決了問題。

從下面的文章 java.dzone.com article 我發現必需的最小罐子是...現在版本號已經改變,但只有這些庫,我設法讓它工作。

  • JasperReports的-2.0.4.jar
  • 公地消化器-1.7.jar
  • 公地集合-2.1.jar(公地collections.jar)
  • 共享記錄-1.0.2的.jar
  • 公地beanutils.jar
  • 的iText-2.0.7.jar(使用Infor的PDF導出)
3

要解決這個問題,做T他以下幾點:

  1. 從Open JDK切換到Sun JDK
  2. 安裝MS核心字體
  3. 包裝JasperReport的字體庫JAR與應用程序
4

這可能是內存的問題,重新啓動服務器。

+2

當生成JR輸出的系統磁盤空間不足時,也會發生此錯誤。 – 2014-10-06 18:53:06

+1

@IsraelLopez這就是我的情況 – drinovc 2015-07-10 09:00:46

+1

我剛剛重新啓動我的電腦,問題沒有了。謝謝 – 2017-05-07 16:35:17

3

對於那些仍在運行到這個問題:無頭的OpenJDK JRE Ubuntu服務器12.04,它是簡單地通過

apt-get install ttf-dejavu-extra 
5

這可以解決,以及通過丟失/不可訪問Java的「臨時」目錄引起的。在Font.java,正在創建臨時文件:

Files.createTempFile("+~JF", ".tmp").toFile(); 

在一個系統中, '臨時' 目錄是Tomcat的文件夾下的失蹤,但Java的配置爲使用它:

-Djava.io.tmpdir=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\temp 

BTW。第一次在重新啓動Tomcat之後,該服務實際上拋出了一個IOException,但隨後JasperReports緩存了一些內容,並在隨後的調用中堆棧跟蹤與此處所報告的內容完全相同。

+0

謝謝!這個對我有用。 – Sudhakar 2017-04-24 07:07:24

0

得到了同樣的錯誤 - 顯然JRStyledTextParser使用的是XML的API 依賴通過添加XML的API我把它固定

<dependency> 
    <groupId>xml-apis</groupId> 
    <artifactId>xml-apis</artifactId> 
    <version>1.4.01</version> 
</dependency> 
5

這似乎是一個無頭的模式問題。您需要將java.awt.headless屬性設置爲true。這是可以做到用:

static { 
    System.setProperty("java.awt.headless", "true"); 
} 

或者,通過作爲-Djava.awt.headless=true

而且在Tomcat啓動命令設置的無頭的屬性,你可以閱讀更多關於爲什麼這是必要的,你可以看到無頭模式here

0

在我的情況我是使用此我已經配置在irfonts.xml Arial字體的字體這是象下面

< fontFami Arial字體的字體LY名= 「宋體」 >
<正常> <![CDATA [字體/ ARIAL.TTF] > < /正常>
<大膽> <![CDATA [字體/ arialbd.ttf] >
< /加粗>
<斜體> <![CDATA [字體/ ariali.ttf] >
< /斜體>
<BOLDITALIC> <![CDATA [字體/ arialbi.ttf] >
</BOLDITALIC >
<pdfEmbedded> < [CDATA [真] >
</pdfEmbedded > </fontFamily中>
,但它應該是這樣的:
< fontFamily中NAME = 「宋體」 >
<正常> <![CDATA [fonts/arial.ttf]] > <
/正常>
<黑體> <![CDATA [字體/ arialbd.ttf] > < /加粗>
<斜體> <![CDATA [字體/ ariali.ttf] > < /斜體>
<BOLDITALIC> <!
[CDATA [fonts/arialbi.ttf]] > </boldItalic >
<pdfEmbedded> <!
[CDATA [TRUE]] > </pdfEmbedded >
</fontFamily中>
所以其在上述配置文件的每一標籤的結束標記之前的空間。
我通過刪除它們之間的空間來修復它。

0

我搜索了幾個小時的同一個問題,我的解決方案是沒有提到的其他人。

由於jasper報告版本的錯誤更新,我的classpath上有多個jasperreports jar文件版本。確保你只有一個jasperreports jar文件...

0

這可能有幫助,我有同樣的錯誤,其他解決方案都不起作用。

我修正了它通過更新到java8。

0

在我們的案例中,它有助於刪除臨時服務器(從而確保沒有jar重複)並重新啓動服務器。 提示:如果在新版本發佈後發生錯誤(但之前已經工作,並且在發佈版本中沒有任何相關變化),請嘗試使用此功能

1

稍遲,但這裏是我們出現此問題的原因...我們最近開始使用IntelliJ而不是Eclipse進行開發。我們只是忘了以管理員身份運行IntelliJ ...我們已經用Eclipse做了很長一段時間了,但是根本沒有想到IntelliJ。 最後,我猜想沒有找到字體或找不到文件夾,因爲沒有足夠的權限來讀取/寫入c盤。

0

我在開發機器上遇到了同樣的問題。基本上,它是發生由於應用服務器(的Apache Tomcat)問題

基本上我不小心刪除了在服務器根目錄下的「臨時」文件夾中。所以碧玉不能編輯報告並繼續生成報告。

-2

你可以嘗試降級到jdk7,這對我很有用。

對不起我的英語!

相關問題