(编辑澄清)
我的(非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下载到我的Gradle依赖关系缓存中的“bundles”目录而不是普通的“jars”目录下,然后Gradle似乎不在它的类路径中包含这个jar就像它会而是在“jars”子目录下。
我发现它属于“捆绑”,因为POM将其标记为启用OSGi的jar。我认为我们不想要OSGi-ify我们的项目。我是否坚持使用较旧版本的Jersey,或者我还能做些什么来让Gradle看到Jersey jar?如果可能的话,我宁愿不手动将文件复制到本地仓库,而是以某种方式依赖于Gradle的依赖管理功能(如果它取决于任务。)
答案 0 :(得分:0)
OSGi包是具有额外清单条目的普通罐。您应该能够像在任何其他依赖项中那样在非OSGi项目中使用它们。它们最终会出现在缓存的bundle目录中吗?
答案 1 :(得分:0)
'Twas是一个愚蠢的疏忽:从1.1.4.1移动到1.12,POM依赖关系发生了变化,因此jersey-core.jar不再被隐含地引入。我必须明确地添加jersey-core.jar。我认为问题在于jersey-server.jar是作为一个包导入的,但我真的只是为一个在jersey-core.jar中的类获得了ClassNotFoundException。