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>,我們能夠解決問題。

感謝您的意見,我很感激。