Получение java.lang.noclassdeffounderror: org.springframework/amqp/core/corelation

#linux #spring-boot #spring-amqp #spring-messaging

#linux #весенняя загрузка #spring-amqp #spring-обмен сообщениями

Вопрос:

Моя версия spring_boot_version равна ‘2.0.5.RELEASE’, spring_version = ‘4.3.8.RELEASE’, а зависимости spring, которые я использую для запуска rabbit mq, являются:

  compile("org.springframework.boot:spring-boot-starter-websocket:$spring_boot_version") {
        exclude group: "org.springframework.boot", module: "spring-boot-starter-logging"
    }
    compile "org.springframework.boot:spring-boot-starter-log4j2:$spring_boot_version"
    compile("org.springframework.amqp:spring-rabbit:2.1.4.RELEASE") {
        exclude group: "org.springframework.boot", module: "spring-boot-starter-logging"
    }
    compile "org.codehaus.jackson:jackson-mapper-asl:1.9.13"
    compile "org.apache.logging.log4j:log4j-web:2.7"
  

Приложение отлично работает на моем локальном компьютере, но я получаю эту ошибку при запуске сервера spring boot в качестве службы systemd на сервере Linux.
Как решить эту проблему на уровне сервера?

Ответ №1:

Я бы рекомендовал org.springframework.boot:spring-boot-starter-amqp spring-rabbit использовать его, поскольку вы используете spring boot.

Ошибка, которую вы видите, вероятно, потому, что вам org.springframework.amqp:spring-amqp также нужно добавить.

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

1. и если я использую его, какую версию я должен использовать?

2. Должно быть что-то другое; 2.1.4 просто не совместим с Boot 2.0.5 (а для загрузки 2.0.x требуется spring 5.0.x, а не 4.3.x). Загрузка 2.0.x работает с spring amqp 2.0.x, загрузка 2.1.x работает с amqp 2.1.x. Как говорит @devshawn, лучше использовать загрузочный стартер, чтобы получить все правильные зависимости; используйте ту же начальную версию, что и ваша загрузка.

3. @viraj — Это может работать локально из-за того, что что-то еще находится в вашем пути к классу java, например, если вы используете IDE и импортируете что-то другое, кроме build.gradle — как сказал @Gary Russell, я бы попробовал spring-boot-starter-amqp и использовал ту же версию spring boot, которую вы используетедля этой зависимости (и удалите явную зависимость spring-rabbit).