Весенняя загрузка 2. Java 10. JUnit. Пакет org.slf4j доступен более чем из одного модуля: <unnamed>, slf4j.api

Я использую Maven, Java 10, Spring boot 2 и Junit 5 для создания своего приложения с модульными тестами.

Основной класс приложения:

package mypackage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {

    private final static Logger LOGGER = LoggerFactory.getLogger(MyApplication.class);

    public static void main(String[] args) {
        LOGGER.info("I'am running...");
        SpringApplication.run(MyApplication.class, args);
    }
}

Мой тестовый класс JUnit:

package mypackage;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;


@ExtendWith(SpringExtension.class)
@SpringBootTest(classes=MyTest.class)
public class MyTest {
    private static final Logger LOGGER = LoggerFactory.getLogger(MyTest.class);
    @Test
    public void myTest() {
        LOGGER.info("Message from test");
    }
}

Когда я импортирую свой проект maven в Eclipse 4.10, я получаю сообщение об ошибке в своем тестовом классе:

The package org.slf4j is accessible from more than one module: <unnamed>, slf4j.api

Но mvn install работает нормально, а maven-surefire-plugin работает правильно. Что я делаю неправильно? Или это ошибка затмения? Может быть, Java 10, Junit и SLF4J не работают вместе? в моем модуле-info.java: требуется slf4j.api;

Пожалуйста помогите.

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

Ответы 3

Это происходит, когда вы добавили внешние банки в ModulePath. Удалите эти добавленные внешние банки и добавьте зависимость, используя pom.xml

Проверьте в разделе «Иерархия зависимостей», библиотека slf4j должна находиться в одной зависимости.

В пути модуля в eclipse только jdk, другая зависимость maven в пути к классам.

Alexander Revkov 26.02.2019 09:43

Я полагаю, вы добавили банку для slf4j в ModulePath:

Перейдите в Project -> BuildPath -> Config BuildPath -> Удалить JAR-файлы из Modulepath.

В пути модуля в eclipse только jdk, другая зависимость maven в пути к классам.

Alexander Revkov 26.02.2019 09:43
Ответ принят как подходящий

Необходимо удалить module-info.class из вашего проекта с весенней загрузкой. пружинная загрузка/#16031

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