当前位置: 首页 > 知识库问答 >
问题:

Tomcat:JRStyledTextParser未初始化。JAVAawt设置为true

江嘉悦
2023-03-14

我一直得到java.lang.NoClassDefFoundError:无法初始化类net.sf.jasperreports.engine.util.JRStyledTextParser

完整的堆栈跟踪是:

java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:108)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:69)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:200)
net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:215)
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:115)
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:583)
net.sf.jasperreports.engine.JasperRunManager.runToPdf(JasperRunManager.java:455)
net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:870)
com.evnica.interop.main.ReportServlet.createReport(ReportServlet.java:119)
com.evnica.interop.main.ReportServlet.doGet(ReportServlet.java:96)
com.evnica.interop.main.ReportServlet.service(ReportServlet.java:79)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

我已经找到了解决方案,找到了一堆。

  • 无法初始化类网络。旧金山。jasperreports。发动机util。JRStyledTextParser

还有大约10个(这是我的第一个问题,所以我不可能把他们都包括在内)。

我试过:

  1. 设置java。awt。headless=true

我在代码内做到了:

 static {
    System.setProperty("java.awt.headless", "true");
    System.out.println(java.awt.GraphicsEnvironment.isHeadless());
 }

(按预期返回true)。

我将CATALINA_选项设置为-Djava。awt。headless=true。回响如预期。

这没用。

我试了一下。带有DejaVu SAN的jrxml,包括jasperreports-fonts-6.2.2。jar在路径中,我用无衬线测试了它。我检查了JVM可以使用哪些字体,并用它们进行了测试。没有成功。

有人建议检查jasper报告罐的版本——我也检查过了。我有6.2.2版本的所有罐子:

jasperreports-6.2.2.jar, 
jasperreports-fonts-6.2.2.jar, 
jasperreports-javaflow-6.2.2.jar.

我使用的是joda-time-2.9.3(不知道它是如何与问题联系在一起的,但有一个建议是使用joda;无论如何,我从一开始就使用它),project SDK是java 1.8.0_51(有一个建议要更新到8,因为我已经在使用它了),我的Tomcat还可以(缺少工作文件夹在其中一个案例中导致了类似的问题)。

我错过了什么?

编辑:在调试时,我来到了JRGraphEnv初始化器类中的一个方法初始化GrophEnv(),它会抛出一个util.graphic.environment.initialization.error:

AVAILABLE_FONT_FACE_NAMES.addAll(Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()));

有趣的是,SunGraphics环境中的方法get可用性FontFamilyNames()返回一个由274个元素组成的有效数组(在链接下从调试器打印屏幕):

共有1个答案

魏航
2023-03-14

首先,感谢大家的帮助。你的反应如此之快,让我更深入地挖掘(问题解决了。

我的错误是将这两个jasperreports-6.2.2都包含在内。jar和jasperreports-javaflow-6.2.2。jar在库中。正如您所记得的,堆栈跟踪中的最后一个方法是初始化JRBaseFiller。两个jar的存在导致了冲突,因为它们都包含一个包net。旧金山。jasperreports。发动机用JRBaseFiller类填充

我留下了jasperreports-javaflow-6.2.2。仅限jar。它不能单独工作。我又添加了两个库:jfreechart-1.0.19。jar(以前的版本没有包含所有需要的类)和jcommon-1.0.8java。lang.NoClassDefFoundError已消失。

 类似资料:
  • 当安装完成并首次启动 Navicat Monitor 时,浏览器会弹出并打开你的 Navicat Monitor 的网址“http://<your_ip_address>:<port_number>”。你需要在欢迎页面完成 Navicat Monitor 的基本配置。 【注意】<your_host_address> 是安装了 Navicat Monitor 的系统的主机名,以及 <port_num

  • 以下是我的配置 java版本“1.8.0_101”java(TM)SE运行时环境(构建1.8.0_101-b13)java热点(TM)64位服务器虚拟机(构建25.101-b13,混合模式) 使用Apache http客户端v4.4调用Restful服务,服务URL具有有效的证书(SHA2) 我们使用apache http客户端调用服务。下面是代码 服务调用是间歇性失败的,有一个批处理过程在一个循

  • 我正在尝试运行一个Spring项目。pom.xml: 结果是这样的: 2017-08-17 01:11:01.405信息9156---[restartedMain]org.ocp.TestruleemallApplication:在桌面上启动TestruleemallApplication-PL25CTR,PID 9156(C:\Users\Ilias\DesktoP\TestRuleEmall\

  • 设备初始化 图源:Yubico 设备初始化非常简单,但在安全隐私管理方面需要一些系统性方法。在将来,这可以通过定义 MDM 分发的组策略来加强下面所提到的措施。 设置一个 8 个数字字符的 PIN 码使 macOS 如期登录。如果 PIN 码中包含字母等其他字符,macOS 将无法工作。你可以使用一个安全的密码管理器生成和存储 PIN 码。 设置 钥匙管理(Management Key) 选项为

  • 可让PS Vita系统软件的设定回复初始设定,使主画面及开始画面皆回到至购买时的状态。 轻触[格式化]>[初始化设定]。请遵循画面指示正确操作。 重要 初始化设定后无法复原,请注意。 初始化中请勿关闭PS Vita的电源。初始化若遭到中断,可能会导致故障。 即使进行此操作,也无法让系统软件回到先前版本。

  • 问题内容: 我在用Java工作。 我通常会这样设置一些对象: 问题是:在此示例中是否等于,按原样我可以假定对未初始化的对象进行空检查将是准确的? 问题答案: 正确,未显式初始化的引用类型的静态成员和实例成员都由Java 设置为。相同的规则适用于数组成员。 根据Java语言规范的第4.12.5节: 变量的初始值 程序中的每个变量在使用值之前都必须具有一个值: 每个类变量,实例变量或数组组件在创建时均