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

Java Manifest.mf类路径问题

  •  3
  • Tim  · 技术社区  · 17 年前

    Class-Path: $SYBASE/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
    

    这将产生ClassNotFoundError$SYBASE是指向/opt/sybase13的系统变量;我还尝试了以下方法:

    Class-Path: /opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
    

    和

    Class-Path: opt/sybase13/jConnect-6_0/classes/jconn3.jar commons-net-1.3.0.jar
    

    Class-Path: jconn3.jar commons-net-1.3.0.jar
    

    应用程序按预期运行。

    现在,我已经能够通过在本地复制jconn3.jar文件来验证它是否有效;我的MANIFEST.MF文件包含到我的主类的路径,所以这里不讨论这个问题。

    谢谢

    2 回复  |  直到 17 年前
        1
  •  12
  •   erickson    17 年前

    类路径中的条目要么是相对于嵌入它们的JAR(您正在使用的JAR),要么是url。要使绝对路径正常工作,您需要将它们转换为URL,例如。,

    file:/opt/sybase13/...

    没有使用变量的机制。

    虽然JAR规范没有明确说明,但是绝对正确 file: 方案URL在类路径属性中起作用。

        2
  •  0
  •   Community Mohan Dere    6 年前

    类加载器AFAIK不会读取环境变量。但是,您可以在配置脚本中添加jar

    类路径:

    此属性的值指定此应用程序或扩展需要的扩展或库的相对URL。URL由一个或多个空格分隔。应用程序或扩展类加载器使用此属性的值来构造其内部搜索路径。

    http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html #清单说明