Беговая майка с гризли

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

В основном мой основной:

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>


person li-raz    schedule 10.02.2015    source источник
comment
Что это (AppMain.java:134)? Кроме того, вы используете Maven или какое-либо другое управление зависимостями?   -  person meskobalazs    schedule 10.02.2015
comment
Это может быть проблема с версией, поскольку Java EE 6 действительно не имеет этого метода, а Java EE 7 - есть.   -  person meskobalazs    schedule 10.02.2015
comment
может быть, это мой недостаток, так как я новичок в java, но я работаю с jdk 1.8   -  person li-raz    schedule 10.02.2015
comment
Попробуйте изменить com.sun.jersey на org.glassfish.jersey в pom.xml   -  person meskobalazs    schedule 10.02.2015


Ответы (1)


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

person meskobalazs    schedule 10.02.2015