2015-02-10 2 views
2

Я пытаюсь использовать Джерси с Гризли, как самостоятельного хостингаЗапуск Джерси с Grizzly

В основном мой основной является:

org.glassfish.jersey.server.ResourceConfig rc = new ResourceConfig(); 
rc.registerClasses(DummyController.class); 
webServer = GrizzlyHttpServerFactory.createHttpServer(uri, rc, false); 
System.out.println("Server Created"); 
try { 
    webServer.start(); 
    System.out.println("Server Started"); 
} catch (IOException e) { 
} 

Я создал небольшой контроллер:

@Path("/") 
public class DummyController { 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String get() { 
     return "Got it!"; 
    } 
} 

Однако , когда я его запускаю, я получаю исключение:

Exception in thread "main" java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; 
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:309) 
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:289) 
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.<init>(GrizzlyHttpContainer.java:331) 
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory.createHttpServer(GrizzlyHttpServerFactory.java:141) 
at RestServer.Server.main(Server.java:35) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 

Когда я не добавляя ресурс гризли сервер работает нормально, но я не могу получить доступ к любому контроллеру

я использовал Maven для загрузки всех зависимостей

это файл П

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>TestRestServer</groupId> 
<artifactId>TestRestServer</artifactId> 
<version>1.0-SNAPSHOT</version> 

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.grizzly</groupId> 
     <artifactId>grizzly-framework</artifactId> 
     <version>2.3.18</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.annotation</groupId> 
     <artifactId>javax.annotation-api</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-grizzly2</artifactId> 
     <version>1.18.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.18.3</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-grizzly2-servlet</artifactId> 
     <version>2.15</version> 
    </dependency> 
</dependencies> 

+0

Что это '(AppMain.java:134)'? Кроме того, вы используете Maven или какое-то другое управление зависимостями? – meskobalazs

+0

Я использую maven –

+0

Возможно, проблема с версией, поскольку Java EE 6 действительно не поддерживает этот метод, но Java EE 7 делает. – meskobalazs

ответ

5

Решение изменило зависимость от com.sun.jersey до org.glassfish.jersey в pom.xml. Первый содержит реализацию API JAX-RS 1.x (часть Java EE 6), последний содержит реализацию API JAX-RS 2.0 (часть Java EE 7).