我正在尝试修复尝试将碧玉报告导出为 pdf 时出现的错误,但是在使用 JRXmlLoader 加载 .jrxml 文件时,代码会引发此异常:
Caused by: java.lang.IllegalAccessException: Class org.openide.util.WeakListenerImpl$ProxyListener can not access a member of class org.openide.filesystems.$Proxy0 with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(Unknown Source)
at java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openide.util.WeakListenerImpl$ProxyListener.<init>(WeakListenerImpl.java:413)
... 100 more
这是似乎导致该执行的代码:
JasperDesign jasperDesign = JRXmlLoader.load("C:/jrxmls/myreport.jrxml"); //< this line
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, resultSetDataSource);
由于这不是我的代码,而且我真的不知道如何使用 jasper,因此我提前为无法为这个问题提供更多上下文而道歉。
我在构建路径中添加了多个 org.openide-,因为我有大量的“ClassNotFoundException”,也许这就是问题所在?
我在某处读到问题可能来自 jasperreport 与 JDK 8 的兼容性问题,但奇怪的是代码在从 Eclipse 运行时有效,只有在作为可运行的 jar 文件运行时才会引发异常。这个程序并不年轻,它可能有 2 年的时间,直到现在,程序运行完美(正如我听说的那样)。
编辑:好的,所以,我尝试使用 1.7 版的 jre 运行程序。不幸的是,由于它依赖于在 1.8 上运行的其他程序,我无法测试这个解决方案。