我想与JasperReports分享我的经验,这或多或少是一个常见的错误。
在执行JasperReports以生成PDF报告时,我有一个例外:
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:667)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:983)
我的环境:
同样的问题是:
我尝试了这些解决方案,但没有成功。
发布于 2017-03-30 09:13:10
所以这里有一些检查要做的:
-Djava.awt.headless=true
选项运行Java。使用无头字体时,库需要包含字体(默认的JasperReport字体是Pictonic.ttf)私有静态布尔hasTempPermission() { if (System.getSecurityManager() == null) {返回真;} File =空;布尔hasPerm = false;尝试{f= Files.createTempFile("+~JT",".tmp").toFile();f.delete();f= null;hasPerm =真;} catch (Throwable t) { /* inc.任何类型的SecurityException */ }返回hasPerm;}
java.io.tmp文件(如果您指定了它,可以使用java.io.tmp选项)。因此,请检查您的临时文件夹是否已满,无法由用户/ Java PID组写入。如果不是这样的话,就会抛出一个异常,但是它会被捕获并且看不见.
发布于 2017-06-19 11:07:22
在我的开发机器上,我也面临过同样的问题。基本上,这是由于应用服务器(Apache tomcat)中的问题而发生的。
基本上,我无意中删除了服务器根目录中的"temp“文件夹。因此jasper无法编译报表并继续进行报表生成。
此外,临时文件夹空间也会对报表生成过程造成巨大损害。
因此,请检查服务器中的下列项
发布于 2021-08-16 12:48:50
我在几个小时后找到了解决办法。如果使用bitnami撰写文件,则必须对java文件夹进行批量处理。报告运行在java 1.8_201版本中。因此,您应该下载1.8_201,并将其批量编写为您的对接器。
volumes:
- 'jasperreports_data:/bitnami/jasperreports'
- '/path/your/downloaded/java:/opt/bitnami/java'
https://stackoverflow.com/questions/43113372
复制相似问题