一尘不染

错误的路径警告,它来自哪里?

java

当我使用编译器警告(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的配置中找不到任何地方(我将整个项目删掉了),没有任何东西指向这些文件。它们的确不在那个名字下出现,但是引用它们的是什么?


阅读 304

收藏
2020-12-03

共1个答案

一尘不染

我认为@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。

2020-12-03