Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在测试期间指定Manifest.MF-Fat/着色JAR_Java_Maven_Manifest.mf - Fatal编程技术网

Java 在测试期间指定Manifest.MF-Fat/着色JAR

Java 在测试期间指定Manifest.MF-Fat/着色JAR,java,maven,manifest.mf,Java,Maven,Manifest.mf,我需要在MANIFEST.MF文件中显示一些值,以使JAI对ImageIO.read满意 在maven周期的测试阶段,它们需要存在于何处才能可用?这不在测试资源中吗 src/test/resources/META-INF/MANIFEST.MF 经过广泛的搜索,这似乎是不可能的 但是,这个问题永远不会出现,因为JAI在JAR中,并且JAR应该包含所需的值。因此,正如在一个类似问题上所建议的那样,我确实在尝试编译JAI。在我的例子中,因为我将我的一个组件作为可执行文件部署给天真的用户,所以我使用

我需要在MANIFEST.MF文件中显示一些值,以使JAI对ImageIO.read满意


在maven周期的测试阶段,它们需要存在于何处才能可用?

这不在测试资源中吗

src/test/resources/META-INF/MANIFEST.MF

经过广泛的搜索,这似乎是不可能的

但是,这个问题永远不会出现,因为JAI在JAR中,并且JAR应该包含所需的值。因此,正如在一个类似问题上所建议的那样,我确实在尝试编译JAI。在我的例子中,因为我将我的一个组件作为可执行文件部署给天真的用户,所以我使用shade插件构建了一个“胖JAR”,它分别包含所有类

不幸的是,我将用于构建该应用程序的pom.xml文件复制到了我引用的一个类库中,因此该类库也变成了一个“胖JAR”。这个jar不包含清单中的值,即使它引用了JAI库,结果导致了混乱。这个问题变得更加复杂,因为这个错误是几个月前犯的,直到现在,在一个无关的更改之后,JVM才开始使用特定Fat引用JAR中的JAI版本

如果你遇到同样的问题(互联网搜索显示其他人也有),首先尝试两件事

  • 将规范供应商和实现供应商属性添加到您自己构建的任何JAR的清单文件中

  • 构建一个简单的应用程序,只需使用ImageIO.read读取任何图像文件,然后逐个运行这个删除maven引用,直到问题消失,并将精力集中在这个JAR上


  • 我确实试过了,但它似乎没有收到。文件将被复制,但如果您想将其放入war或jar中,还需要确保使用的是src/test/resources中的版本,而不是src/main/resources中的版本。我们需要更多关于您如何构建jar的信息来帮助您。@PaulHicks jar文件不是他的问题,他只希望在测试阶段(即创建jar之前)更改清单。是的,但问题可能是正确的清单被忽略了。我们不知道他到底在哪里寻找清单,也不知道他流程的哪一部分试图使用清单。因此,他要调查的另一件事可能是一个好主意。如下所示,似乎manifest.mf值只有在您实际拥有一个JAR时才可用