春季启动2。Java10。JUnit。包org.slf4j可以从多个模块访问:<未命名>,slf4j.api

时间:2019-02-25 08:48:42

标签: java maven spring-boot junit slf4j

我使用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");
    }
}

当我在Eclipse 4.10中导入我的Maven项目时,我在测试类上遇到错误:

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

但是mvn install工作正常,并且maven-surefire-plugin运行正确。我做错了什么?还是eclipse bug?也许Java 10,Junit和SLF4J不能一起使用?在我的module-info.java中:需要slf4j.api;

请帮助我。

3 个答案:

答案 0 :(得分:0)

当您在ModulePath中添加了外部jar时,就会发生这种情况。  删除那些添加的外部jar,并使用pom.xml添加依赖项

在依赖关系层次结构下检查,slf4j库应处于一个依赖关系下

答案 1 :(得分:0)

我相信您已将slf4j的jar添加到ModulePath:

转到项目-> BuildPath->配置BuildPath->从Modulepath中删除Jars

答案 2 :(得分:0)

需要从spring-boot项目中删除module-info.class。 spring-boot/#16031