3

(为澄清而编辑)

我的(非 OSGi)应用程序构建在 Gradle 中,我正在尝试从非常旧的 Jersey 版本(1.1.4.1)升级到更新的版本(1.12?)。我不会假装对使用 OSGi 有任何了解。但是当我将我的 Gradle 依赖项($JERSEY_VERSION设置为“1.12”)指向:

[group: 'com.sun.jersey', name: 'jersey-server', version: "$JERSEY_VERSION"]

它将 jersey-server-1.12.jar 下载到“bundles”目录下的我的 Gradle 依赖项缓存中,而不是普通的“jars”目录下,然后 Gradle 似乎没有将这个 jar 包含在其类路径中,就像它在“jars”子目录。

我发现它在“捆绑包”下,因为 POM 将它标记为启用 OSGi 的 jar。我认为我们不会想要 OSGi 化我们的项目。我是否坚持使用旧版本的 Jersey,或者我还能做些什么来让 Gradle 看到 Jersey jar?如果可能的话,我宁愿手动将文件复制到本地存储库,而是以某种方式依赖 Gradle 的依赖项管理功能(如果可以完成任务)。

4

2 回答 2

0

OSGi 包是带有额外清单条目的普通 jar。您应该能够像在任何其他依赖项中一样在非 OSGi 项目中使用它们。它们最终出现在缓存的捆绑目录中是否有问题?

于 2012-05-14T19:53:30.353 回答
0

'这是一个愚蠢的疏忽:从 1.1.4.1 到 1.12,POM 依赖项发生了变化,因此 jersey-core.jar 不再被隐式引入。我必须明确添加 jersey-core.jar。我曾认为问题在于 jersey-server.jar 是作为捆绑包导入的,但实际上我只是为 jersey-core.jar 中的一个类获得了 ClassNotFoundException。

于 2012-06-25T16:00:40.287 回答