在MANIFEST.MF中具有不兼容的类路径的Applet依赖项JAR

时间:2011-01-10 13:57:18

标签: java maven-2 applet classpath apache-fop

我的applet取决于两个JAR库。每个JAR库都依赖于xercesImpl-2.2.1.jar。不幸的是,他们希望它有不同的名称:

  • Apache FOP 0.20.5

    • META-INF / MANIFEST.MF中的条目:类路径:xercesImpl-2.2.1.jar ...
  • Apache Xalan 2.4.1

    • META-INF / MANIFEST.MF中的条目:Class-Path:xercesImpl.jar ...

xercesImpl-2.2.1.jar在标记中指定。我可以在Java控制台中看到它已成功下载。但是后来控制台显示尝试读取不存在的xercesImpl.jar。必须从Xalan清单中获取此信息,因为Web应用程序代码未在任何地方指定xercesImpl.jar。显然它实际上已经有了这个JAR的内容,所以它实际上并不需要加载它。

我正在使用Maven来管理依赖项,并希望继续使用这两个标准的公共开源库而不会破坏它们的清单。有关解决此问题的最佳方法的任何建议 - 或者我是否应该接受Java控制台中的虚假错误?

2 个答案:

答案 0 :(得分:1)

我不是Maven maven,但你可能最好不要单独留下依赖项,并以某种方式为你的项目提供一个“目标”,其中包括重新打包其中一个JAR文件在你的项目中。

可能一种方法是使'重新打包的JAR'工件取决于'fop'工件,并且您的项目依赖于'重新打包的JAR'工件。这样的事情。

答案 1 :(得分:0)

这是我最新的略带苛刻的想法。我创建了有效的空JAR文件,其中没有类,并将它们称为Class-Path中条目的名称,例如xercesImpl.jar。我将它们放入src / main / webapp中,这样它们就会被包含在正确的位置。然后,Java插件会愉快地下载它们,而不是记录错误。

这样我只需要破解Web内容(无论如何都是乱七八糟),而不是搞乱库JAR文件,Maven依赖项或构建过程。

仍然对任何更好的建议持开放态度......