我可以阻止javac从我们的第三方罐子的清单中访问Class-Path吗?

Tre*_*kaz 6 java jar javac manifest classpath

自Java 1.5以来,javac一直在寻找第三方罐子的清单来寻找其他罐子.这会导致许多不良副作用:

  1. 由于jar文件已被重命名,我们现在每当编译时都会收到大量警告(可以使用-Xlint:-path)
  2. 我们不希望在类路径上的文件被带回到它上面,即使它们由于某种原因而被遗弃.
  3. 由于解决了我们实际上并不想要的东西,所以在构建中需要额外的时间来查找所有这些额外的罐子.

所以我想知道是否有人知道魔术调用来禁用它.假设Sun没有给我们带来另一个我们不想要的功能,一旦我们拥有它就无法关闭.

bma*_*ies 1

使用 bnd 或 Shadow 从 jar 中删除有问题的 MANIFEST.MF 条目,而不仅仅是重命名。或者利用这些路径名本质上从来都不是绝对的这一点。如果将名为“i-have-a-ClassPath.jar”的 jar 移动到其自己的子目录中,清单类路径条目将无法在预期位置找到这些其他 jar。不过,我想如果你打开足够多的棉绒,它仍然会发出抱怨声。