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>Мы смогли решить проблему.

Спасибо за вклад, я ценю.

Другие вопросы по тегам