Джаспер борется с JBoss - PullRequest
0 голосов
/ 14 июня 2011

Привет. Я пытаюсь использовать отчеты Jasper (4.0.2) с JBoss 6, используя файл XML в качестве источника данных.Тем не менее, существует значительное количество необходимых JAR библиотек, и, поскольку я не могу исключить библиотеки JBoss, я исключил любые конфликтующие JAR-файлы Jasper.Когда я запускаю программу сама по себе, все хорошо, однако, когда я заново представляю библиотеки JBoss, я получаю это при попытке выполнить что-либо, связанное с Jasper:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logmanager/Logger$AttachmentKey
    at org.slf4j.impl.Slf4jLoggerFactory.<clinit>(Slf4jLoggerFactory.java:31)
    at org.slf4j.impl.StaticLoggerBinder.getLoggerFactory(StaticLoggerBinder.java:33)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:240)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:208)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:645)
    at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.<clinit>(JRXmlDigesterFactory.java:180)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:205)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:170)
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:154)
    at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:111)
    at com.ehive.report.ejb3.RenderReportBean.execute(RenderReportBean.java:56)
    at com.ehive.report.ejb3.RenderReportBean.main(RenderReportBean.java:46)
Caused by: java.lang.ClassNotFoundException: org.jboss.logmanager.Logger$AttachmentKey
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    ... 14 more

Библиотека Log4j, на которую она, похоже, жалуется,одна и та же версия в Jboss и Jasper, поэтому я смущен исключением.

Может кто-нибудь сказать мне, это общая проблема совместимости или есть безопасный способ включить все необходимые библиотеки без конфликта?

Ответы [ 4 ]

1 голос
/ 14 июня 2011

Я делаю так же, как вы используете *common-annotations,commons-beanutils-1.7.0,commons-collections-3.2.1,commons-digester-1.8,commons-logging-1.1.1jasper-compiler-jdt-5.5.23,jasperreports-3.7.2,slf4j-api-1.5.10,xmlbeans-2.3.0* и другие баночки в веб-приложении JSF + spring успешно!

0 голосов
/ 20 июня 2011

Итак, проблема заключалась в том, что были включены файлы jasperreports-4.0.2.jar и jasperreports-javaflow-4.0.2.jar.После того, как JAR-файл «javaflow» был удален, все развернулось плавно.

0 голосов
/ 14 июня 2011

Вы можете переупаковать классы, которые конфликтуют, а именно log4j и Jasper с чем-то вроде ссылок jar jar (???). Это, конечно, будет означать, что у вас есть две копии log4j, хотя и с разными именами пакетов, и пользовательская яшма. Однако, когда все сделано, все должно работать, если в коде нет жестко закодированных строк, которые ссылаются на исходные имена пакетов в log4j. Надеюсь, это не будет проблемой:)

0 голосов
/ 14 июня 2011

У меня была похожая проблема (хотя и не та) с моими отчетами о Джаспере. Он даже не скомпилируется из-за конфликтов классов с веблогическими банками. Мое решение состояло в том, чтобы скомпилировать файлы jasper jrxml, используя отдельную цель ant, для которой был определен отдельный путь к классу. После того, как jrxml был скомпилирован в файлы jasper, у меня не возникло проблем с его запуском на сервере приложений.

...