Spring 启动 2. Java 10. JUnit。包 org.slf4j 可从多个模块访问:<unnamed>、slf4j.api
Spring boot 2. Java 10. JUnit. The package org.slf4j is accessible from more than one module: <unnamed>, slf4j.api
我使用 Maven、Java 10、Spring boot 2 和 Junit 5 通过单元测试创建我的应用程序。
主应用程序class:
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 测试 class:
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 项目时,我在测试中遇到错误 class:
The package org.slf4j is accessible from more than one module: <unnamed>, slf4j.api
但是 mvn 安装工作正常并且 maven-surefire-plugin 运行 正确。我做错了什么?还是日食错误?也许 Java 10、Junit 和 SLF4J 不能一起工作?在我的模块中-info.java:需要slf4j.api;
请帮助我。
当您在 ModulePath 中添加了外部 jar 时,就会发生这种情况。
删除那些添加的外部 jar 并使用 pom.xml
添加依赖项
在Dependency Hierarchy下检查,slf4j库应该在一个依赖下
我相信您已经将 slf4j 的 jar 添加到 ModulePath 中:
转到项目 -> 构建路径 -> 配置构建路径 -> 从模块路径中删除 Jars
需要从您的 spring-boot 项目中删除模块-info.class。 spring-boot/#16031
我使用 Maven、Java 10、Spring boot 2 和 Junit 5 通过单元测试创建我的应用程序。
主应用程序class:
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 测试 class:
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 项目时,我在测试中遇到错误 class:
The package org.slf4j is accessible from more than one module: <unnamed>, slf4j.api
但是 mvn 安装工作正常并且 maven-surefire-plugin 运行 正确。我做错了什么?还是日食错误?也许 Java 10、Junit 和 SLF4J 不能一起工作?在我的模块中-info.java:需要slf4j.api;
请帮助我。
当您在 ModulePath 中添加了外部 jar 时,就会发生这种情况。 删除那些添加的外部 jar 并使用 pom.xml
添加依赖项在Dependency Hierarchy下检查,slf4j库应该在一个依赖下
我相信您已经将 slf4j 的 jar 添加到 ModulePath 中:
转到项目 -> 构建路径 -> 配置构建路径 -> 从模块路径中删除 Jars
需要从您的 spring-boot 项目中删除模块-info.class。 spring-boot/#16031