代码之家  ›  专栏  ›  技术社区  ›  Yishai

坏路径警告,它来自哪里?

  •  21
  • Yishai  · 技术社区  · 15 年前

    当我用编译器警告(JDK 1.5)编译我的项目时,我得到了一堆错误的路径元素警告:

    警告::[path]错误的路径元素“C:\Users\User\MyJava\common\lib\junit.jar”:没有这样的文件或目录 警告::[path]错误的路径元素“C:\Users\User\MyJava\common\lib\jdom.jar”:没有这样的文件或目录 警告::[path]错误的路径元素“C:\Users\User\MyJava\common\lib\xerces.jar”:没有这样的文件或目录 警告::[path]错误的路径元素“C:\Users\User\MyJava\common\lib\xmlapi.jar”:没有这样的文件或目录

    还有更多。

    4 回复  |  直到 15 年前
        1
  •  34
  •   Brent Writes Code    15 年前

    #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 ./*
    

    那就应该成功了!

    我不认为您只是想要抑制这些消息,因为如果您想要完全控制类路径上的内容,您应该搜索这些清单文件,确保它们不会以您不知道的方式干扰类路径。

    for i in *.jar; do echo $i; jar xf $i; grep -i 'class-path' ./META-INF/MANIFEST.MF; done
    

        2
  •  28
  •   Yishai    15 年前

    根据 this 问题是,在第三方JAR中,清单中有对这些JAR的引用。可以通过向编译参数添加-Xlint:-path来禁用该消息。

        3
  •  0
  •   Avi    15 年前

    您是否检查了正在设置CLASSPATH环境变量和编译选项的位置?

        4
  •  0
  •   L. Cornelius Dol    9 年前

    所讨论的path元素很可能在JAR的清单文件中。要找到有问题的JAR,可以运行此shell脚本,该脚本将仅提取清单文件并显示其拥有的任何类路径:

    for i in *.jar; do echo $i; /path/to/your/jdk/bin/jar xf $i META-INF/MANIFEST.MF; grep -i 'class-path' META-INF/MANIFEST.MF; done