Java拼图模块:要求静态产生ClassNotFoundException

问题描述

用“ 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 (将#修改为@)