问题描述
用“ requires static”声明一个可选的依赖项似乎不起作用,我得到了ClassNotFoundException
。删除“ static”关键字时,它会起作用。
我是在做错什么,还是Java,Maven,Surefire或 SLF4J的自动模块?
我创建了一个简单的项目进行复制。
mvn测试的相关错误:
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at [email protected]/example.Test.test(Test.java:10)
Caused by: java.lang.classNotFoundException: org.slf4j.LoggerFactory
at [email protected]/example.Test.test(Test.java:10)
src / main / java 中的modules-info.java :
module example {
requires static org.slf4j;
}
测试代码 src / test / java / example / Test.java :
package example;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test {
@org.junit.Test
public void test() {
Logger logger = LoggerFactory.getLogger("example");
logger.info("here");
}
}
Maven pom.xml :
<project>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<groupId>org.example</groupId>
<artifactId>requires-static-example</artifactId>
<version>1.0-SNAPSHOT</version>
<name>requires static test</name>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
</plugins>
</build>
</project>
版本:
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/java/apache-maven-3.6.3
Java version: 11.0.8,vendor: Ubuntu,runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_AU,platform encoding: UTF-8
OS name: "linux",version: "5.4.0-48-generic",arch: "amd64",family: "unix"
可以在以下位置找到完整的示例:https://github.com/cruftex/requires-static-example
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)