警告:找不到提供程序com.sun.xml.internal.bind.v2.ContextFactory

问题描述 投票:5回答:5

我已经通过Jersey在JSF应用程序中集成了一些Web服务。一切正常,即使OAuth标识也可以正常工作。但!启动我的网络服务器时,我总是会收到此错误:

INFO: Scanning for root resource and provider classes in the packages:
  com.mysite.webService
INFO: Root resource classes found:
  class com.mysite.webService.Accounts
INFO: No provider classes found.

INFO: Initiating Jersey application, version 'Jersey: 1.17 01/17/2013 03:31 PM'

SEVERE: The provider class, class com.sun.jersey.oauth.server.OAuthProviderInjectionProvider, could not be instantiated. Processing will continue but the class will not be utilized
java.lang.RuntimeException: No OAuthProvider implementation found in the list of providers.
    at com.sun.jersey.oauth.server.OAuthProviderInjectionProvider.<init>(OAuthProviderInjectionProvider.java:71)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

((edit2:上面的问题已经解决)

和此警告:

...

WARNING: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory not found by com.sun.jersey.glassfish.v3.osgi.jersey-gf-server [157]]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:148)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:361)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:446)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:409)
    at com.sun.jersey.server.impl.wadl.WadlApplicationContextImpl.<init>(WadlApplicationContextImpl.java:95)

这是我的web.xml相关条目:

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>my.site.webService</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

我的班级看起来像这样:

@Path("/rest")
public class MyClass {

    @GET 
    @Path("/{id}/results")
    @Produces("application/json")
    public String getResults(@Context HttpContext hc, @PathParam("id")) {
        //...
    }
}

我正在使用Majorra 2.1.20Glassfish 2.1.2.2作为插件使用PrimeFaces 3.4.1上的Jersey 1.17。如果有任何影响,请在Eclipse Juno中开发。

编辑

这并不妨碍我就Web服务而言一切正常。但是每次我在Glassfish上重新发布内容时,都会显示错误。

如下面的答复中所述,此问题应已根据JIRA bug JERSEY-709在1.7版中修复。但是我在1.17版中表现良好,但我仍然对此感到满意。

我还添加了一条警告,即将进入堆栈跟踪。如果这可以帮助确定问题!

搜索网络:我找到了The same unresolved issue here

编辑2

如下所述,更新我的OAuthClient.jar确实解决了第一个error。我仍在获取WARNING: Provider com.sun.xml.internal.bind.v2.ContextFactory not found

编辑3-尝试的解决方案

在我认为会领先this question之后,尝试更新JAXB。这并没有成功。同样的警告。当删除我的web.xml中的Jersey位时,此警告停止显示(只是为了确认这确实是问题的起因)。

java jaxb jersey glassfish-3
5个回答
11
投票

在另一种情况下:使用Maven的独立Java App

在pom.xml中,使用以下行定义了jaxb:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.1</version>
</dependency>

项目编译成功,但是在运行时,我收到了相同的异常(java.lang.ClassNotFoundException:com.sun.xml.bind.v2.ContextFactory)

解决了在jaxb-api依赖项之前添加此行的问题

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.1.2</version>
</dependency>

1
投票

升级到Jersey 1.18时,此错误消失了。

请参见https://java.net/jira/browse/JERSEY-1932

要将Glassfish升级到Jersey 1.18,请参见:https://jersey.java.net/nonav/documentation/1.18/glassfish.html


0
投票

这应该已经根据JERSEY-709在v1.7中修复。


0
投票

M8,我也在以下地方遇见了:

  NetBeans 7.2
  Glassfish 3.1.2.2 which have jersey 1.11, and jersey-oauth 1.11.

但是它可以与:

  NetBeans 7.3
  Glassfish 3.1.2.2 which have jersey 1.11 (I didn't modify jars in glassfish/module folder)
  jersey 1.13 and jersey-oauth 1.13 (which is packed in war)

然后,该异常不再存在。

我仍然不太确定如何解决它,但是我希望这可以为您提供帮助。


0
投票
Sun people have remove directly access to jaxb package in java 11.
These dependency will work instead of it.
And same time if if you facing hibernate "NullPointerException" issue.


<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.25.0-GA</version>
</dependency>
shareeditdeleteflag
© www.soinside.com 2019 - 2024. All rights reserved.