IntelliJ: класс Java не найден, но код успешно развертывается

У меня есть REST API, и я хочу использовать поток Kafka в некоторых вызовах API. Я могу развернуть код на сервере JBoss без каких-либо ошибок, но при выполнении вызова api я получаю следующую ошибку:

org.jboss.resteasy.spi.UnhandledException: java.lang.NoClassDefFoundError: org/apache/kafka/clients/consumer/KafkaConsumer

Я вижу этот класс во внешних библиотеках в IntelliJ. Вот мой класс ресурсов:

package com.company.rest;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.Properties;
import java.util.Arrays;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import java.util.function.Supplier;

@Path("topic")
public class TopicResource {
    private final static String TOPIC = "MyTopic";
    private final static String BOOTSTRAP_SERVERS = "localhost:9092";

    @GET
    @Path("/{name}")
    @Produces(MediaType.TEXT_PLAIN)
    public void getTopic(@PathParam("name") String name) {

        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "SupplierDeserializer");

        KafkaConsumer<String, Supplier> consumer = new KafkaConsumer<String, Supplier>(props);

        consumer.subscribe(Arrays.asList("MyTopic"));

        while (true){
            ConsumerRecords<String, Supplier> records = consumer.poll(100);
            for (ConsumerRecord<String, Supplier> record : records){
                System.out.println("Print some text");
            }
        }
    }
}

Вот мой файл pom.xml:

<dependencies>
    <!-- https://mvnrepository.com/artifact/javax.ejb/javax.ejb-api -->
    <dependency>
        <groupId>javax.ejb</groupId>
        <artifactId>javax.ejb-api</artifactId>
        <version>3.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>2.0.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-streams -->
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-streams</artifactId>
        <version>2.0.0</version>
    </dependency>
</dependencies>

Я не уверен, что я делаю что-то не так или это связано с какой-то конфигурацией IntelliJ. Любая помощь будет принята с благодарностью. Заранее спасибо!

Эта ошибка связана с тем, что класс не находится в загрузчике классов или, возможно, в JVM. Это означает, что ваше приложение не находится на сервере или у вас нет доступа к нему. Некоторые jar-файлы / классы, которые вам необходимо предоставить вместе с вашим приложением. Обновлено: Зависимости упаковки в вашем jar / war

Mr00Anderson 08.08.2018 18:13

Фляга находится в вашем военном файле?

Thorbjørn Ravn Andersen 08.08.2018 18:13

вы можете удалить банку kafka-streams, если вы ее не используете, и попробуйте

Deadpool 08.08.2018 20:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
150
0

Другие вопросы по теме