【发布时间】:2010-09-24 20:31:10
【问题描述】:
我一直在尝试运行一个 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 文件包含我的主类的路径,所以这里没有问题。
您认为可能是什么问题?我已经看这个东西太久了。 谢谢!
【问题讨论】:
-
我假设这个 JAR 包含您的数据库驱动程序;应用程序创建自己的 java.net.URLClassLoader 来获取通过某些应用程序配置指定的类中的驱动程序类是很常见的。
-
为什么不直接将 jar 附加到应用程序的启动脚本中。大多数应用服务器都有一个特殊的部分来放置这些额外的 jar。
标签: java variables system classpath manifest.mf