2014-10-09 91 views
4

我在Weblogic 12上部署Web服务应用程序。该应用程序使用球衣,因此取决于javax.ws.rs-api:2.0.1库。java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava/util/Map;当部署球衣ws到Weblogic

然而,当我把它部署到服务器我有一个以下错误:

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文件打包应用程序,并试图使用

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

weblogic.xml中,明确地告诉Weblogic的使用2.0.1版本库。

没有什么帮助,到目前为止,还是很到位的问题..

感谢。

+0

这可能是那里的太阳球衣的客户端(1.x中)被加载到之前的新球衣库(2内存中的类加载的问题。 X)。当我使用的其他实用程序包括jersey-client 1.x时,我遇到了这个问题,但我已经能够在我的项目构建文件中排除该依赖项。 – 2014-10-10 15:39:15

回答

3

我发现这是作为解决方案。它添加在你的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> 

Reference from Oracle Weblogic Documenation

+0

只有 ''' < - - JSR311的* .jar!>。 javax.ws.rs *' 需要为你的错误。 – phabtar 2015-08-11 11:39:04