gpt4 book ai didi

java - 在另一个 Jar 中对第三方库 (Jar) 的外部引用,而不将第二个库包装在第一个库中

转载 作者:行者123 更新时间:2023-11-30 04:59:04 26 4
gpt4 key购买 nike

我正在编写一小段代码,旨在使用 AppleScriptEngine 与 Growl 进行通信。我将获得一个名为 MyApplication.jar 的 jar 文件,其中包含我的所有类,但我需要引用 AppleScriptEngine.jar (由 Apple 开发并存储在/System/Library/Java/Extension 中)...这里的问题: AppleScriptEngine.jar 存在在每个 Os x 发行版中,所以我想在 MyApplication.jar MANIFEST.MF 中引用它,而不在我的 .jar 文件中添加 AppleScriptEngine.jar。这基本上有两个原因:首先AppleScriptEngine是Apple的专有文件,其次我希望有一种方法可以引用文件系统内的现有文件。我阅读了很多有关 jar 文件的正确组成的内容,在每个示例中我发现都有打包在编码器的 jar 文件内的外部 jar 文件。我尝试修改 MANIFEST 中的类路径属性,以便以这种方式直接指向 AppleScriptEngine.jar:

list 版本:1.0

Rsrc 类路径:./

类路径:/System/Library/Java/Extensions/AppleScriptEngine.jar

Rsrc-Main-Class:core.MyApplicationLauncher

主类:org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Rsrc-Class-Path 应该是我的 jar 内的本地引用,但是给出 Class-Path 的绝对路径我应该能够引用系统内的每个文件。也许我定义路径的方式有问题,或者我只能引用嵌套在我的 jar 中的文件。在 eclipse 内部显然一切都工作正常,因为它引用了 JRE 系统库,其中也包含 AppleScriptEngine.jar。因此,也许有一种方法可以直接引用我的 MANIFEST 文件中的 JRE 系统库。经过几个小时的冲浪后我找不到答案。有人有办法克服这个僵局吗?

最佳答案

经过多次尝试和错误,我终于找到了解决方案。我的错误是尝试将 AppleScriptEngine.jar 的绝对路径添加为 Class-Path 的属性;相反,正确的解决方案是仅添加包含我们感兴趣的 Jar 文件(外部文件)的文件夹的绝对路径作为 Class-Path 的属性,然后添加该 Jar 文件的名称作为Rsrc-Class-Path 的值。我相信在文件已位于文件系统中的每种情况下,这是引用外部库的正确方法。这是我的 MANIFEST.MF:

Manifest-Version: 1.0

Rsrc-Class-Path: ./ AppleScriptEngine.jar

Class-Path: . /System/Library/Java/Extensions/

Rsrc-Main-Class: core.NotifierLauncher

Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

注意,在Class-Path:之后,点之前和点之后都有一个空格。这是因为 MANIFEST 文件内使用空格来分隔不同的参数。没有关于该论点的友好文档

关于java - 在另一个 Jar 中对第三方库 (Jar) 的外部引用,而不将第二个库包装在第一个库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7547635/

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