Веб-приложение, использующее джерси — java.lang.Abstractmetoderror

#java #maven #jersey-2.0

#java #maven #джерси-2.0

Вопрос:

Я получаю следующую ошибку при развертывании войны приложений на tomcat и запуске приложения.

СЕРЬЕЗНОЕ: сервлет [веб-приложение Джерси] в веб-приложении [/ reasoner-api] выдал исключение load() java.lang.Ошибка abstractmetoderror: класс приемника org.glassfish.jersey.internal.config.ExternalPropertiesAutoDiscoverable не определяет и не наследует реализацию разрешенного метода ‘abstract void configure(javax.ws.rs.core.FeatureContext)’ интерфейса org.glassfish.jersey.internal.spi.AutoDiscoverable.

pom.xml

   <?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>gr.iti.sodalite</groupId>
        <artifactId>semantic-reasoner</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
        <modules>
            <module>reasoning-engine</module>
            <module>reasoner-api</module>
        </modules>
        <properties>
            <jersey2.version>3.0.0-M6</jersey2.version>
            <jaxrs.version>2.1.1</jaxrs.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
         <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.glassfish.jersey</groupId>
                    <artifactId>jersey-bom</artifactId>
                    <version>${jersey2.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-bundle -->
            <!-->dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-bundle</artifactId>
                <version>1.19</version>
            </dependency-->
    
            <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-servlet -->
            <!-- dependency>
                <groupId>com.sun.jersey</groupId>
                <artifactId>jersey-servlet</artifactId>
                <version>1.19</version>
            </dependency-->
            
            <!-- https://mvnrepository.com/artifact/io.swagger/swagger-jersey2-jaxrs -->
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-jersey2-jaxrs</artifactId>
                <version>1.6.2</version>
            </dependency>
            
            <dependency>
                <groupId>org.eclipse.rdf4j</groupId>
                <artifactId>rdf4j-runtime</artifactId>
                <version>3.4.3</version>
                 <type>pom</type>
            </dependency>
            <!-- <dependency> -->
            <!-- <groupId>org.eclipse.rdf4j</groupId> -->
            <!-- <artifactId>rdf4j-sparqlbuilder</artifactId> -->
            <!-- <version>3.0.0</version> -->
            <!-- </dependency> -->
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.10.8</version>
            </dependency>
            <dependency>
                <groupId>com.ontotext.graphdb</groupId>
                <artifactId>graphdb-free-runtime</artifactId>
                <version>9.4.0</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.6</version>
            </dependency>
    
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>5.1.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>5.1.0</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <build>
            <finalName>reasoner-api</finalName>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.2.0</version>
                    <executions>
                        <execution>
                        <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                         <!--  configuration>
                     <source>8</source>
                     <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable> 
                    </configuration-->
                    
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.22.0</version>
                </plugin>
                
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.5</version>
                    <executions>
                        <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        </execution>
                        <!-- attached to Maven test phase -->
                        <execution>
                            <id>report</id>
                            <phase>test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
  

web.xml

 <!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>


    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <!-- For Jersey 1.x -->
        <!-- servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class-->
        <!-- For Jersey 2.x -->
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>            
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>
                io.swagger.jaxrs.listing,
                restapi
            </param-value>
        </init-param>

        <load-on-startup>1</load-on-startup>
    </servlet>


    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/v0.6/*</url-pattern>
    </servlet-mapping>
</web-app>  

Комментарии:

1. вы уже нашли решение?

2. Привет, Феликс, он работал с отрывками файлов, которые я только что опубликовал в качестве ответа в сообщении.

Ответ №1:

Он работал с этими файлами.

Web.xml

 <!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>


    <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <!-- For Jersey 2.x -->
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>            
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>
                io.swagger.jaxrs.json,
                io.swagger.jaxrs.listing,
                restapi
            </param-value>
        </init-param>
<!--        <init-param> -->
<!--            <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> -->
<!--            <param-value>filter.CORSFilter</param-value> -->
<!--        </init-param> -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- servlet>
        <servlet-name>Jersey2Config</servlet-name>
        <servlet-class>io.swagger.jaxrs.config.DefaultJaxrsConfig</servlet-class>
        <init-param>
            <param-name>api.version</param-name>
            <param-value>0.6</param-value>
        </init-param>
        <init-param>
            <param-name>swagger.api.basepath</param-name>
            <param-value>http://160.40.52.200:8084/reasoner-api/v0.6</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
        
    </servlet-->


    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/v0.6/*</url-pattern>
    </servlet-mapping>
  

Выдержка из pom.xml

     <properties>
        <jersey2.version>2.32</jersey2.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <default.min.distinct.threshold>104857600</default.min.distinct.threshold>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey2.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <dependencies>
        <!-- https://mvnrepository.com/artifact/io.swagger/swagger-jersey2-jaxrs -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-jersey2-jaxrs</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <!-- use the following artifactId if you don't need servlet 2.x compatibility -->
            <!-- artifactId>jersey-container-servlet</artifactId -->
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-hk2</artifactId>
        </dependency>    
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.2</version>
        </dependency>
...
        </dependency>
    </dependencies>