当我使用编译器警告(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。