JasperReports NoClassDefFoundError exception on net.sf.jasperreports.engine.util

 引自stackoverflow

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true"
 

http://stackoverflow.com/questions/3628302/jasperreports-noclassdeffounderror-exception-on-net-sf-jasperreports-engine-util

Finally, I’ve got it working. I detected the root Exception, which was thrown before NoClassDefFoundError:net/sf/jasperreports/engine/util/JRStyledTextParser :

The Sun AWT classes on Unix and Linux have a dependence on the X Window System. When you use these classes, they expect to load X client libraries and be able to talk to an X display server. This makes sense if your client has a GUI; unfortunately, it’s required even if your client uses AWT but does not have a GUI (which is my case, generating a report from a web application)

The way to bypass this, is setting a system property java.awt.headless=true on system startup.

在tomcat 可以修改catalina.sh 类似:


JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true"

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ClassNotFoundException: net.sf.jasperreports.engine.fonts.SimpleFontExtension 是指在使用JasperReports报表引擎时,Java虚拟机(JVM)无法找到所需的字体扩展类。 JasperReports是一个开源的报表生成库,广泛用于Java开发中的报表生成和打印功能。在使用JasperReports时,我们可以自定义报表的样式和字体。其中,字体扩展类用于实现自定义字体的加载和使用。 出现ClassNotFoundException异常可能有以下几种原因: 1. 缺少相关的JAR包:JasperReports依赖于一些JAR包,包括字体扩展类所在的jar文件。如果缺少了这些JAR包,或者版本不对应,就会导致JVM找不到所需的类。 解决方法:检查项目的依赖配置,确保相关的JAR包被正确地引入,并且版本匹配。 2. 类路径问题:如果字体扩展类在类路径中找不到,也会导致JVM无法加载该类。 解决方法:检查类路径配置,确保字体扩展类所在的路径被正确地包含在类路径中。 3. 字体配置问题:如果自定义字体的配置文件中指定了字体扩展类,但实际上没有正确地提供该类,同样会导致JVM找不到该类。 解决方法:检查字体配置文件中的字体扩展类的指定,确保正确提供该类。 综上所述,ClassNotFoundException: net.sf.jasperreports.engine.fonts.SimpleFontExtension 异常通常是由于缺少JAR包、类路径配置错误或字体配置问题导致的。通过检查项目的依赖配置、类路径配置和字体配置,可以解决该异常。 ### 回答2: ClassNotFoundException: net.sf.jasperreports.engine.fonts.SimpleFontExtension是一个在使用JasperReports报表引擎时可能出现的异常。 JasperReports是一个开源的报表引擎,用于生成各种报表。SimpleFontExtension是其中的一个字体扩展类。当程序在运行时尝试加载该字体扩展类时,如果找不到该类文件,就会抛出ClassNotFoundException异常。 出现这个异常的原因可能有以下几种: 1. 缺少依赖库:在使用JasperReports时,需要将相关的依赖库正确地加入到程序的类路径中。如果缺少了某个必需的依赖库,就会导致找不到SimpleFontExtension类文件。 2. 版本不匹配:如果使用的JasperReports版本与程序中引用的字体扩展类的版本不匹配,也会导致找不到类文件。 解决这个问题的方法有以下几种: 1. 确保依赖库正确添加:检查程序中是否已经添加了JasperReports的相关依赖库,并且版本正确。如果没有添加或添加了错误的版本,可以尝试重新添加正确的依赖库。 2. 检查类路径设置:确认程序的类路径配置正确,包括包含JasperReports的相关库和类文件的路径。 3. 检查字体扩展类的位置:确认SimpleFontExtension类文件是否在正确的位置,可以尝试重新引入或更新该类文件。 4. 检查报表配置文件:如果报表中引用了SimpleFontExtension类,需要确保配置文件正确地指定了该类的路径和名称。 总之,classNotFoundException: net.sf.jasperreports.engine.fonts.simplefontextensio异常通常是由于缺少依赖库或配置错误引起的。通过检查依赖库、类路径和配置文件,可以解决该问题。 ### 回答3: ClassNotFoundException:net.sf.jasperreports.engine.fonts.SimpleFontExtension ClassNotFoundException是一个Java异常,表示在运行时找不到类。在这种情况下,异常为net.sf.jasperreports.engine.fonts.SimpleFontExtension,表示找不到该类。 net.sf.jasperreports是一个开源报表工具,它提供了在Java应用程序中设计和生成各种类型的报表的功能。SimpleFontExtension是其提供的字体扩展类之一。 出现ClassNotFoundException的原因可能是以下几种情况: 1. 缺少相应的jar包或依赖文件。如果在使用JasperReports库时没有将必要的jar包包含在项目中,就会导致找不到需要的类。 2. 类路径配置错误。在Java项目中,类路径是指JVM搜索要加载的类的位置。如果类路径配置不正确,JVM将无法找到所需的类。 3. 版本不兼容。如果使用的JasperReports库的版本与代码中引用的SimpleFontExtension类的版本不匹配,也会导致ClassNotFoundException异常。 解决ClassNotFoundException的方法包括: 1. 确保将正确的jar包包含在项目的类路径中。 2. 检查类路径配置,确保指向正确的位置。 3. 确认所使用的JasperReports库与代码中引用的类的版本匹配。 总结:ClassNotFoundException:net.sf.jasperreports.engine.fonts.SimpleFontExtension表示在运行时无法找到JasperReports库中提供的SimpleFontExtension类。可能原因包括缺少必要的jar包、类路径配置错误或不兼容的版本。解决方法包括添加正确的jar包、检查类路径配置以及确保库版本与代码匹配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值