IllegalAccessException при загрузке.jrxml
Я пытаюсь исправить ошибку, которая появляется при попытке экспортировать отчет о яшме в формате PDF, но при загрузке файла.jrxml с использованием JRXmlLoader код выдает это исключение:
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", может быть, именно в этом и возникла проблема?
Я где-то читал, что проблема может быть связана с проблемами совместимости jasper report с JDK 8, но странная вещь заключается в том, что код работает при запуске из Eclipse, исключение выдается только при запуске в качестве исполняемого jar-файла. Эта программа не молода, она может длиться 2 года, и до сих пор программа работала отлично (как я слышал).
РЕДАКТИРОВАТЬ: Итак, я попытался запустить программу, используя версию 1.7 jre. К сожалению, поскольку это зависит от других программ, работающих на 1.8, я не могу протестировать это решение.
1 ответ
Итак, я выяснил, в чем проблема. Я думал, что это были некоторые проблемы с отсутствующими банками, но на самом деле это была совершенно другая ошибка. Первое исключение, которое мы получили, было этим:
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>
Мы смогли решить проблему.
Спасибо за вклад, я ценю.