【问题标题】:Spring boot 2. Java 10. JUnit. The package org.slf4j is accessible from more than one module: <unnamed>, slf4j.api春季启动 2. Java 10. JUnit。 org.slf4j 包可以从多个模块访问:<unnamed>, slf4j.api
【发布时间】:2019-07-18 15:13:21
【问题描述】:

我使用 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 运行正确。我做错了什么?还是日食错误?也许 Java 10、Junit 和 SLF4J 不能一起工作?在我的 module-info.java 中:需要 slf4j.api;

请帮助我。

【问题讨论】:

    标签: java maven spring-boot junit slf4j


    【解决方案1】:

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

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

    【讨论】:

    • 在eclipse的模块路径中只有jdk,其他的maven依赖在classpath中。
    【解决方案2】:

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

    在 Dependency Hierarchy 下检查,slf4j 库应该在一个依赖项下

    【讨论】:

    • 在eclipse的模块路径中只有jdk,其他的maven依赖在classpath中。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2022-09-27
      • 2021-02-28
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多