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

发布于 2024-10-11 09:23:02 字数 586 浏览 8 评论 0原文

我的小程序依赖于两个 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 中的条目:类路径:xercesImpl.jar...

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

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

my applet depends on two JAR libraries. Each JAR library has a dependency on xercesImpl-2.2.1.jar. Unfortunately they want this to have different names:

  • Apache FOP 0.20.5

    • Entry in META-INF/MANIFEST.MF: Class-Path: xercesImpl-2.2.1.jar...
  • Apache Xalan 2.4.1

    • Entry in META-INF/MANIFEST.MF: Class-Path: xercesImpl.jar...

xercesImpl-2.2.1.jar is specified in the tag. I can see in the Java console that it is downloaded successfully. However later the console shows an attempt to read xercesImpl.jar which does not exist. It must be getting this from the Xalan manifest because the web application code does not specify xercesImpl.jar anywhere. Obviously it actually already has the contents of this JAR available so it doesn't actually need to load it.

I am using Maven to manage dependencies and would like to continue using these two standard public open source libraries without hacking their manifests. Any suggestions for the best way to resolve this - or should I just live with the spurious error in the Java console?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情深如许 2024-10-18 09:23:02

我不是 Maven 专家,但您可能最好不要理会依赖项,并以某种方式为您的项目提供一个“目标”,其中涉及一旦 JAR 文件之一“进入”,就对其进行重新打包'你的项目。

可能的一种方法是使“重新打包的 JAR”工件依赖于“fop”工件,并且您的项目依赖于“重新打包的 JAR”工件。类似的事情。

I'm not a Maven maven, but you're probably best off leaving the dependencies alone and somehow giving your project a 'goal' which involves re-packaging one of the JAR files once they are 'in' your project.

Possibly one way to do it is to make 'repackaged JAR' artifact depends on the 'fop' artifact, and your project depends on the 'repackaged JAR' artifact. Something like that.

请你别敷衍 2024-10-18 09:23:02

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

这样我只需要修改 Web 内容(无论如何这都是一团糟),而不是弄乱库 JAR 文件、Maven 依赖项或构建过程。

仍然欢迎任何更好的建议......

Here's my latest slightly hacky idea. I have created valid empty JAR files with no classes in them and called them the names of the entries in the Class-Path, e.g xercesImpl.jar . I'm going to put them into src/main/webapp so they will be included in the right spot. Java plugin will then happily download them instead of logging an error.

This way I only have to hack the web content (which is a mess anyway) rather than mess with the library JAR files, the Maven dependencies or the build process.

Still open to any better suggestions...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文