2011-06-14 65 views
0

您好我正在嘗試使用Jasper(4.0.2)報告與JBoss 6使用XML文件作爲數據源。然而,所需的庫JAR的數量相當多,因爲我不能排除JBoss庫我已經排除了任何衝突的Jasper JAR。當我在自己的運行程序一切都很好,但是當我重新介紹了JBoss庫試圖執行任何碧玉相關的,當我得到這個:賈斯珀與JBoss戰鬥

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中,所以我被這個例外搞糊塗了。

誰能告訴我這是一個普遍的兼容問題還是有一個安全的方式包括但衝突的所有需要​​的庫?

回答

0

所以這個問題是由於包含兩個JasperReports的-4.0.2.jar和JasperReports的-javaflow-4.0.2.jar文件。一旦「javaflow」JAR被移除,所有部署都會順利進行。

0

我有一個類似的問題(雖然不一樣)我Jasper報表。它甚至不會因爲與weblogic jar的類衝突而編譯。我的解決方案是使用單獨的具有單獨類路徑定義的ant目標來編譯jasper jrxml文件。一旦將jrxml編譯爲jasper文件,我在應用程序服務器中運行它並沒有任何問題。

+0

的Weblogic <=使用,因此它不再org.apache.xerces重命名thebundled的Xerces副本... – 2011-06-14 03:35:21

+0

感謝您的建議,我會嘗試這個8.1。 – travega 2011-06-14 23:42:26

0

你可以重新包裝類衝突即Log4j和碧玉W /像jar罐子鏈接(???)。這當然意味着你有兩個log4j副本,儘管有不同的包名和一個自定義碧玉。但是,一旦完成了這些工作,除非在代碼中包含指向log4j中的原始軟件包名稱的硬編碼字符串。希望這不會是一個問題:)

1

我正在做同樣的,你正在使用 *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*和其他jar在JSF +春季web應用成功!