问题描述
最近,我一直在与Jasper合作进行报告生成。我已经创建了一个简单的程序来对其进行测试,并且在通过IDE运行它时效果很好。
然后,我将(很短的)类移至WildFly服务器应用程序,尽管具有完全相同的代码,并且库生成因cannot find symbol
而失败。它找不到的那些符号是JREvaluator
,JRFillVariable
以及诸如net.sf.jasperreports.engine
到目前为止,我已经确认:
- 项目构建(意味着这些类对于javac可见,但对jvm不可见)
-
jasperreports-6.13.0.jar
被添加到war
(与其他库(如/WEB-INF/lib
和gson
一起存在于 -
jasperreports-6.13.0.jar
包含缺少的类
hibernate
文件夹中)
在我看来,问题不在于库没有被加载或缺少类(因为在测试环境中它可以工作),而是某种原因阻止了JBoss类加载器加载那些类
尝试(失败)的解决方案
-
清洁并构建
-
向虚拟机选项添加
-Djava.awt.headless=true
-这并没有改变 -
在虚拟机选项中添加
-Djava.awt.headless=false
-并没有改变任何事情,但是曾经在NullPointerException
库中导致jasperreport
。对于测试程序-在两种情况下均有效 -
添加
commons-beanutils-1.9.4.jar
,commons-digester-2.1.jar
,commons-collections4-4.4.jar
和commons-loggin-1.2.jar
-无需更改 -
添加
jasper-compiler-jdt-5.5.23.jar
–导致了另一个错误,即NoSuchMethodError
的{{1}}和其他错误。但是,该库不是必需的,因为-据我了解-org.eclipse.jdt.internal.compiler.ICompilerRequestor
已经包含它的编译器,而且很长一段时间以来不需要单独的编译器库。
尚未尝试的操作:
- 强制加载类(http://www.java2s.com/Code/Java/Reflection/Forcethegivenclasstobeloadedfully.htm)
- 在运行时动态加载jar或使用自定义类加载器
更新:查看了this的答案并应用了建议后,缺少的课程有所不同。这表明内部 jasperreport-6.13.0.jar
内部的依赖项未正确加载
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)