自Java 1.5以来,javac一直在研究第三方罐子的清单,以寻找其他罐子。这会导致许多不良副作用:
-Xlint:-path
加密)所以我想知道是否有人知道魔术调用来禁用它。假设Sun没有为我们提供另一个我们不想要的功能,并且一旦我们拥有它就无法关闭。
答案 0 :(得分:2)
继承人修改清单文件的Ant目标(使用ant-contrib)
<target name="util-modify-manifest" depends="build-classpath">
<for param="file">
<fileset dir="${jars}" >
<include name="**/*.jar" />
</fileset>
<sequential>
<jar jarfile="@{file}" destfile="@{file}" update="true">
<manifest>
<attribute name="Class-Path" value="" />
<attribute name="Export-Package" value="" />
</manifest>
</jar>
<echo message="Manifest Replaced: @{file}" />
</sequential>
</for>
答案 1 :(得分:1)
使用bnd或shade从jar中去除有问题的MANIFEST.MF条目,而不是仅重命名。或者利用这些路径名从来都不是绝对的面孔。如果将名为“i-have-a-ClassPath.jar”的jar移动到其自己的子目录中,则清单类路径条目将无法在预期位置中找到这些其他jar。我想如果你打开足够的皮棉,仍会抱怨。