【发布时间】:2014-06-13 09:21:54
【问题描述】:
我需要在 MANIFEST.MF 文件中显示一些值,以使 JAI 对 ImageIO.read 感到满意。
在 maven 循环的测试阶段它们需要存在于哪里?
【问题讨论】:
标签: java maven manifest.mf
我需要在 MANIFEST.MF 文件中显示一些值,以使 JAI 对 ImageIO.read 感到满意。
在 maven 循环的测试阶段它们需要存在于哪里?
【问题讨论】:
标签: java maven manifest.mf
那不是在测试资源中
src/test/resources/META-INF/MANIFEST.MF
【讨论】:
经过广泛搜索,这似乎是不可能的。
但是,这个问题永远不会出现,因为 JAI 在 JAR 中,并且 JAR 应该包含所需的值。因此,正如在类似问题上所建议的那样,我确实在尝试编译 JAI。在我的情况下,因为我将我的一个组件作为可执行文件部署给天真的用户,所以我使用 shade 插件构建一个“Fat JAR”,其中包含单独的所有类。
不幸的是,我已将用于构建此应用程序的 pom.xml 文件复制到我引用的类库之一中,因此该类库也变成了“Fat JAR”。这个 jar 不包含清单中的值,即使它确实引用了 JAI 库,因此随之而来的是混乱。这个问题变得更加复杂,因为这个错误是在几个月前犯的,直到现在在一个不相关的更改之后,特定 Fat 引用 JAR 中的 JAI 版本才被 JVM 使用。
如果您遇到同样的问题(互联网搜索表明其他人有),请先尝试 2 件事。
将 Specification-Vendor 和 Implementation-Vendor 属性添加到您自己构建的任何 jar 的清单文件中。
构建一个简单的应用程序,该应用程序只使用 ImageIO.read 读取任何图像文件,然后逐个运行此删除 maven 引用,直到问题消失并将您的精力集中在此 JAR 上。
【讨论】: