0

我试图解决这个问题出现时,试图碧玉报告导出为PDF格式,但加载使用JRXmlLoader以.jrxml文件时的一个错误,代码抛出此异常:IllegalAccessException时加载的.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 

这是一个似乎会导致execption代码:

JasperDesign jasperDesign = JRXmlLoader.load("C:/jrxmls/myreport.jrxml"); //< this line 
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
    jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, resultSetDataSource); 

由于它不是我的代码,因为我真的不知道该怎么用碧玉工作,我提前不是道歉能够为这个问题提供更多的背景。

我已经添加了多个org.openide-我的构建路径,因为我有一吨“ClassNotFoundException”,也许这是问题的来源?

我读过这个问题,可能来自jasperreport与JDK 8的兼容性问题,但奇怪的是代码在从Eclipse运行时工作,异常仅作为可运行jar文件运行时引发。 这个程序不是年轻的,它可能有2年,直到现在,程序运行完美(正如我所听到的)。

编辑:好的,所以,我试图运行该程序使用版本1.7的JRE。不幸的是,由于它依赖于运行在1.8上的其他程序,所以我无法测试这个解决方案。

+1

这可能是由于您自己提到的jdk 8引起的。就Eclipse而言,它可以使用不同版本的jdk本身 - 也许这就是代码在那里运行的原因...... – Plirkee

回答

0

好吧,我发现问题是什么。 我认为这是一些遗漏的瓶子问题,但它实际上是一个完全不同的错误。 我们得到的第一个例外是这一个:

org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 16; Error at line 12 char 16: null 

看堆栈跟踪时,它表明这一点:

Caused by: java.lang.ClassNotFoundException: org.openide.util.Lookup 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 74 more 

这就是为什么我认为,这一项目是缺少一些依赖。

但问题是,在.jrxml文件中,我们添加了仅在测试文档时使用的<queryString>...</queryString>,并且在代码中,我们想用另一个代替该查询,导致引发此异常。

通过删除整个<queryString>...</queryString>,我们能够解决问题。

感谢您的意见,我很感激。