我一直在尝试运行一个 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
and
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 文件包含我的主类的路径,所以这不是这里的问题。
您认为可能是什么问题?我已经关注这个东西太久了。
谢谢!
类路径中的条目要么是相对于它们嵌入的 JAR(您正在使用的),要么是 URL。为了使绝对路径正常工作,您需要将它们转换为 URL,例如,
file:/opt/sybase13/...
没有使用变量的机制。
虽然JAR规范没有说清楚,但是绝对file:
方案 URL 在类路径属性中起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)