Java Jersey JAX_RS中的Bug,JDK中带有选项头>;8.

Java Jersey JAX_RS中的Bug,JDK中带有选项头>;8.,java,jersey,jax-rs,jersey-2.0,Java,Jersey,Jax Rs,Jersey 2.0,我追踪了我在将JDK 8升级到9甚至10之后遇到的一个问题,并创建了这个小示例来重现它 如果我提出要求 curl -i -X OPTIONS http://localhost:8088/test/test OpenJDK 8也可以。在OpenJDK9或10中(没有尝试11或7),我得到了一个异常 org.glassfish.jersey.internal.Errors logErrors WARNUNG: The following warnings have been detected: W

我追踪了我在将JDK 8升级到9甚至10之后遇到的一个问题,并创建了这个小示例来重现它

如果我提出要求

curl -i -X OPTIONS http://localhost:8088/test/test
OpenJDK 8也可以。在OpenJDK9或10中(没有尝试11或7),我得到了一个异常

org.glassfish.jersey.internal.Errors logErrors
WARNUNG: The following warnings have been detected: WARNING: Unknown HK2 failure detected:
MultiException stack 1 of 2
javax.ws.rs.ProcessingException: Error creating a JAXBContext for wadl processing.
at org.glassfish.jersey.server.wadl.internal.WadlApplicationContextImpl.<init>(WadlApplicationContextImpl.java:120)
...

发现问题似乎出在自JDK9以来丢失的JAXB中

如果我添加一个依赖项,它将再次工作

<dependency>
  <groupId>org.glassfish.jaxb</groupId>
  <artifactId>jaxb-runtime</artifactId>
  <version>2.3.2</version>
</dependency>

org.glassfish.jaxb
jaxb运行时
2.3.2
package MyTest.MyTest;

import java.net.*;
import org.glassfish.grizzly.http.server.*;
import org.glassfish.jersey.grizzly2.httpserver.*;
import org.glassfish.jersey.jdkhttp.*;
import org.glassfish.jersey.logging.*;
import org.glassfish.jersey.server.*;

public class MyTest 
{   
  public static void main (String [] args) throws Exception
  {  
     final String uri = "http://localhost:8088/";   // listening

     ResourceConfig rc = new ResourceConfig ();

     rc.packages (MyTest.class.getPackage ().getName ());

     rc.property (LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL, "INFO");
     rc.property (LoggingFeature.LOGGING_FEATURE_VERBOSITY_SERVER, LoggingFeature.Verbosity.PAYLOAD_TEXT);

     // Grizzly-HTTP-Server
     org.glassfish.grizzly.http.server.HttpServer hs = GrizzlyHttpServerFactory.createHttpServer (URI.create (uri), rc);

     // tried JDK-HTTP as a 2nd container - but with ame effect problem
     //com.sun.net.httpserver.HttpServer hs = JdkHttpServerFactory.createHttpServer (URI.create (uri), rc);

     for (int i = 0; i < 100; i ++)
     {
        Thread.sleep (10000);   // 10s
     }    
  }
}
package MyTest.MyTest;

import javax.ws.rs.*;
import javax.ws.rs.core.*;


@Path ("test")
public class Handler 
{
 @GET
 @javax.ws.rs.Path ("/test")
 @Produces (MediaType.TEXT_HTML)
 public String list () throws Exception
 {  
    System.out.println("test");     
    return "OK";
 }
}
<dependency>
  <groupId>org.glassfish.jaxb</groupId>
  <artifactId>jaxb-runtime</artifactId>
  <version>2.3.2</version>
</dependency>