gpt4 book ai didi

Java Manifest.mf 类路径问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:07 27 4
gpt4 key购买 nike

我一直在尝试运行一个 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 的路径,所以这里没有问题。

您认为可能是什么问题?我一直在看这个东西太久了。谢谢!

最佳答案

类路径中的条目要么与嵌入它们的 JAR(您正在使用的)相关,要么是 URL。要使您的绝对路径有效,您需要将它们转换为 URL,例如

file:/opt/sybase13/...

没有使用变量的机制。

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

关于Java Manifest.mf 类路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/332522/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com