繁体   English   中英

Java Manifest.mf类路径问题

[英]Java Manifest.mf classpath issues

我一直在尝试运行一个jar文件-我们称它为test.jar-在Unix系统上使用Sybase jconn3.jar。

我创建了一个具有以下内容的MANIFEST.MF文件:

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

但是,如果我将jconn3.jar文件从$ SYBASE / jConnect-6_0 / classes复制到与test.jar相同的目录,然后将MANIFEST.MF更新如下:

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

该应用程序按预期运行。

现在,我已经能够通过在本地复制jconn3.jar文件来验证它是否有效。 我的MANIFEST.MF文件包含我的Main-Class的路径,因此这里没有问题。

您认为可能是什么问题? 我看这东西已经太久了。 谢谢!

class-path中的条目是相对于嵌入它们的JAR(您正在使用的)还是URL。 为了使您的绝对路径有效,您需要将其转换为网址,例如,

file:/opt/sybase13/...

没有使用变量的机制。

尽管JAR规范没有明确说明,但绝对file:方案URL确实在class-path属性中起作用。

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

根据规范,条目是相对于jar的亲戚,而不是绝对的:

类路径:

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

http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html #Manifest规范

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM