2011-06-14 83 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应用成功!