2011-02-15 343 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,这对我很有用。

对不起我的英语!

相关问题