СЕРЬЕЗНЫЙ: не удалось уничтожить фильтр с именем [Tomcat WebSocket (JSR356) Filter] типа [org.apache.tomcat.websocket.сервер.WsFilter]

#java #spring-boot #websocket #kafka-consumer-api

#java #весенняя загрузка #websocket #kafka-consumer-api

Вопрос:

Я пытаюсь запустить проект Spring Boot, но получаю следующую ошибку.

 java.lang.AbstractMethodError: Receiver class org.apache.tomcat.websocket.server.WsFilter does not define or inherit an implementation of the resolved method 'abstract void destroy()' of interface javax.servlet.Filter.
  

Мне пришлось исключить все logback-classic , потому что я получал следующую ошибку

 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.apache.logging.slf4j.Log4jLoggerFactory loaded from file:/Users/ootero/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.7/log4j-slf4j-impl-2.7.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.apache.logging.slf4j.Log4jLoggerFactory
  

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.tecnositaf.progetto_kafka_okd</groupId>
    <artifactId>alert_consumer_processor</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>alert_consumer_processor</name>
    <description>Demo project for kafka consumer processor</description>

    <properties>
        <java.version>14</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  

У вас есть какие-либо идеи, почему это может происходить?

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

1. Почему вы исключаете logback-classic , по какой-либо конкретной причине? Возможно, проблема связана с одним из ваших фильтров…

2. Я сталкиваюсь с той же проблемой. Есть ли шанс, что вы это поняли?

3. @GarySharpe я решил это не путем исключения зависимостей в моем проекте, а путем компиляции моего проекта с помощью команды mvn clean install из терминала spring boot и последующего выполнения сгенерированного файла .jar в целевой папке с помощью java -jar jarname.jar

Ответ №1:

Я решил это не путем исключения зависимостей в моем проекте, а путем изменения способа компиляции моего проекта.

Теперь я использую команду mvn clean install из командной строки intellij для компиляции. Для выполнения я перемещаюсь в target каталог, чтобы я мог выполнить сгенерированный .jar в этой папке с помощью java -jar jarname.jar из командной строки intellij.