java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;将jersey ws部署到Weblogic时 [英] java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; when deploying jersey ws to Weblogic

查看:600
本文介绍了java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;将jersey ws部署到Weblogic时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在Weblogic 12上部署Web服务应用程序.该应用程序使用jersey,因此依赖于 javax.ws.rs-api:2.0.1 库.

I'm deploying a web service application on Weblogic 12. The application uses jersey and thus depends on javax.ws.rs-api:2.0.1 library.

但是,当我将其部署到服务器时,出现以下错误:

However when I deploy it to server I have a following error :

Caused By: java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map;
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:304)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:285)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
    at javax.servlet.GenericServlet.init(GenericServlet.java:240)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:337)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:288)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
...

我认为weblogic可能具有它自己的javax.ws.rs.core.Application版本,而该版本没有此getProperties()方法.我将应用程序打包在WAR文件中,并尝试使用

I think that weblogic might have it's own version of javax.ws.rs.core.Application that doesn't have this getProperties() method. I'm packaging the application in a WAR file and tried to use

  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>

weblogic.xml 中的

,以明确告诉Weblogic使用该库的2.0.1版本.

in weblogic.xml, to explicitly tell Weblogic to use 2.0.1 version of this library.

到目前为止没有任何帮助,问题仍然存在.

Nothing helped so far, the issue still in place..

谢谢.

推荐答案

我发现这可以作为解决方案.将其添加到您的weblogic.xml中:

I found this to work as a solution. Add it in your weblogic.xml:

    <wls:container-descriptor>
    <wls:prefer-application-packages>
        <!--  jersey-bundle-*.jar-->
        <wls:package-name>com.sun.jersey.*</wls:package-name>
        <wls:package-name>com.sun.research.ws.wadl.*</wls:package-name>
        <wls:package-name>com.sun.ws.rs.ext.*</wls:package-name>

        <!-- Jackson-*.jar -->
        <wls:package-name>org.codehaus.jackson.*</wls:package-name>

        <!-- jettison-*.jar -->
        <wls:package-name>org.codehaus.jettison.*</wls:package-name>

        <!-- jsr311*.jar -->
        <wls:package-name>javax.ws.rs.*</wls:package-name>

        <!-- asm.jar -->
        <wls:package-name>org.objectweb.asm.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>

来自Oracle Weblogic文档的参考

这篇关于java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;将jersey ws部署到Weblogic时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆