当我使用编译器警告(JDK 1.5)来编译我的项目时,我收到很多错误的路径元素警告:
警告:: [路径]错误的路径元素“ C:\ Users \ User \ MyJava \ common \ lib \ junit.jar”:没有这样的文件或目录警告:: [路径]错误的路径元素“ C:\ Users \ User \ MyJava \ common \ lib \ jdom.jar“:没有这样的文件或目录警告:: [path]错误的路径元素” C:\ Users \ User \ MyJava \ common \ lib \ xerces.jar“:没有这样的文件或目录警告:: [路径]错误的路径元素“ C:\ Users \ User \ MyJava \ common \ lib \ xml-apis.jar”:没有这样的文件或目录
还有很多。
这使用的是IDEA 8.1.3。我在IDEA的配置中找不到任何地方(我将整个项目删掉了),没有任何东西指向这些文件。它们的确不在那个名字下出现,但是引用它们的是什么?
我认为@Yishai拥有此权利(我将给他投票以使球滚动)。我一直都遇到这个问题。我认为对于Java语言来说这是一个可怕的决定,他们认为允许类路径设置进入jar文件中的MANIFEST文件中是可以的。因此,从本质上讲,Jar可以在其中包含指向其他类的文件,以及位于其他位置的jar,当它们指向的其他内容不存在时,您会看到类似所收到警告的警告。这些警告是从编译类路径上的Jar文件发出的。因此,如果您真正关心的话,您需要做的是查找有问题的jar文件,提取jar文件的内容,删除清单文件中的“ Class-Path”设置,然后重新创建它们。
#Extract the jar file
jar xvf myfile.jar
rm myfile.jar
emacs ./META-INF/MANIFEST.MF
*Find the entry "Class-path:" and remove it completely and save the changes
#Rebuild the jar file
jar cvf myfile.jar ./*
这应该够了吧!
我不认为您只想隐藏这些消息,因为如果您想完全控制类路径上的内容,则应该搜索这些清单文件,并确保它们不会以您不喜欢的方式与类路径混淆知道关于。
可能您需要浏览大量的jar文件,因此我通常最终使用shell循环来帮助我浏览它们。您可以将所有相关的Jar都复制到一个临时目录中,然后运行如下循环(bash语法):
for i in *.jar; do echo $i; jar xf $i; grep -i 'class-path' ./META-INF/MANIFEST.MF; done
这将打印当前目录中每个Jar文件的名称,提取其内容,并为类路径条目grep其清单文件。如果输出中的jar文件的名称后面带有“ Class-Path”打印输出,则表示Jar在清单中具有类路径设置。这样,您就可以找出需要采取哪些操作的Jars。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句