Я использую 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;
Пожалуйста помогите.




Это происходит, когда вы добавили внешние банки в ModulePath. Удалите эти добавленные внешние банки и добавьте зависимость, используя pom.xml
Проверьте в разделе «Иерархия зависимостей», библиотека slf4j должна находиться в одной зависимости.
Я полагаю, вы добавили банку для slf4j в ModulePath:
Перейдите в Project -> BuildPath -> Config BuildPath -> Удалить JAR-файлы из Modulepath.
В пути модуля в eclipse только jdk, другая зависимость maven в пути к классам.
Необходимо удалить module-info.class из вашего проекта с весенней загрузкой. пружинная загрузка/#16031
В пути модуля в eclipse только jdk, другая зависимость maven в пути к классам.