我有一个问题,我的想法如何解决它刚刚完成。也许你可以帮助我。
在我的项目中,我正在使用'org.xhtmlrenderer:flying-saucer-pdf:9.1.7'
此库使用取决于com.lowagie:itext:2.1.7
。不幸的是我也应该导入com.lowagie:itext:2.1.7
。所以我有这样的事情:
grails.project.dependency.resolution = {
dependencies {
build ('com.lowagie:itext:2.1.7') {
excludes 'bctsp-jdk14'
excludes 'bcmail-jdk14'
excludes 'bcprov-jdk14'
}
compile 'org.xhtmlrenderer:flying-saucer-pdf:9.1.6'
}
}
当我尝试使用飞碟库时会出现问题。我有一个例外:com.lowagie.text.pdf.BaseFont.getCharBBox(C)[Ijava.lang.NoSuchMethodError: com.lowagie.text.pdf.BaseFont.getCharBBox(C)
问题是如何修复类似的东西,因为我和库只使用com.lowagie:itext:2.1.7
感谢。
答案 0 :(得分:1)
你们的Grails项目正在所谓的JAR Hell中受苦。您的Grails应用程序依赖项和传递依赖项(您的依赖项和Grails插件使用的依赖项)正在产生冲突。在您的情况下,类路径上的类的多个版本。
您所能做的就是分析您的WAR类路径并尝试识别冲突的类及其JAR。
之后尝试以下解决方案之一:
在寻找其他解决方案时,我找到了一个名为jHades的有前途的软件项目。也许你可能也想看看这个。
jHades允许您通过执行以下命令来分析您的WAR文件
java -jar jhades-standalone-report.jar path/to/war/webapp.war
此外,您可以通过将jHades添加到类路径(作为依赖项)并向您的web.xml添加jHades servlet listener来解决Web应用程序问题。
<listener>
<listener-class> org.jhades.JHadesServletListener</listener-class>
</listener>