将库打包为OSGi包的java.lang.ClassFormatError异常

时间:2012-10-28 16:25:02

标签: osgi bundle

在我的项目中打包我需要的库作为OSGi包时,我仍然在苦苦挣扎。 我已经问过它了here。答案肯定是足够好的,但同样,我还有另一个问题,我不明白,不能分解:(

我最终将这个库打包为OSGi包,我已经确定了所有需要的依赖项,现在所有这些都在一个完整的jar存档中。

现在,如果我尝试使用该库的某个函数,则会引发异常,因为:

Caused by: java.lang.ClassFormatError: javax/ws/rs/core/UriBuilder
    at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClient.<init>(JerseyJiraRestClient.java:61)
    at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory.create(JerseyJiraRestClientFactory.java:34)
    at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory.createWithBasicHttpAuthentication(JerseyJiraRestClientFactory.java:39)
    at com.tieto.etb.esb.libs.jiraclient.JiraClient.getClient(JiraClient.java:28)[145:jiraclient.bundle:0.1.0.SNAPSHOT]
    at com.tieto.etb.esb.jira.JiraBean.projectInfo(JiraBean.java:38)[142:jira.bundle:0.1.0.SNAPSHOT]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_35]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)[:1.6.0_35]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_35]
    at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_35]
    at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:341)[70:org.apache.camel.camel-core:2.10.1]
    at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:238)[70:org.apache.camel.camel-core:2.10.1]
    at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166)[70:org.apache.camel.camel-core:2.10.1]
    ... 52 more

我想问你一个提示,那可能是什么问题。我认为在构建捆绑包时出现了问题。

例如,我有另一个用于此捆绑包的pom,我在编译范围内拥有所有pom。这个捆绑工作......

我会比较两种情况下的MANIFEST文件,可能还有一些遗漏的依赖项。

1 个答案:

答案 0 :(得分:0)

好的,以某种方式解决了。在这里寻求帮助之前,我应该更深入地讨论这个问题:) 因此,在pom文件中,我已将依赖的范围更改为javaee-api为“provided”。 (hint

然后有一些抱怨“未解决的依赖”,但那些标有“; resolution:=”可选“:P

到目前为止它的确有效。但我想这与“干净又漂亮”的解决方案相差甚远。