Ошибка:
Код: Выделить всё
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at nl.altindag.log.util.LogbackUtils.getSlf4jLogger(LogbackUtils.java:66)
at nl.altindag.log.util.LogbackUtils.getLogger(LogbackUtils.java:52)
at nl.altindag.log.LogCaptor.(LogCaptor.java:56)
at nl.altindag.log.LogCaptor.forName(LogCaptor.java:91)
at nl.altindag.ssl@10.0.1-SNAPSHOT/nl.altindag.ssl.keymanager.KeyManagerFactoryWrapperShould.(KeyManagerFactoryWrapperShould.java:41)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
... 9 more
Код: Выделить всё
[INFO] --- dependency:3.7.0:tree (default-cli) @ ayza ---
[INFO] io.github.hakky54:ayza:jar:10.0.1-SNAPSHOT
[INFO] +- io.github.hakky54:yaslf4j:jar:1.0.5:compile
[INFO] +- org.junit.jupiter:junit-jupiter-api:jar:5.14.0:test
[INFO] | +- org.opentest4j:opentest4j:jar:1.3.0:test
[INFO] | +- org.junit.platform:junit-platform-commons:jar:1.14.0:test
[INFO] | \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] +- org.junit.jupiter:junit-jupiter-engine:jar:5.14.0:test
[INFO] | \- org.junit.platform:junit-platform-engine:jar:1.14.0:test
[INFO] +- org.mockito:mockito-junit-jupiter:jar:5.11.0:test
[INFO] | \- org.mockito:mockito-core:jar:5.11.0:test
[INFO] | +- net.bytebuddy:byte-buddy-agent:jar:1.17.8:test
[INFO] | \- org.objenesis:objenesis:jar:3.3:test
[INFO] +- org.assertj:assertj-core:jar:3.27.6:test
[INFO] | \- net.bytebuddy:byte-buddy:jar:1.17.8:test
[INFO] +- io.github.hakky54:logcaptor:jar:2.12.1:test
[INFO] | +- ch.qos.logback:logback-classic:jar:1.3.15:test
[INFO] | | \- ch.qos.logback:logback-core:jar:1.3.15:test
[INFO] | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.25.1:test
[INFO] | | \- org.apache.logging.log4j:log4j-api:jar:2.25.1:test
[INFO] | \- org.slf4j:jul-to-slf4j:jar:2.0.17:test
[INFO] +- io.github.hakky54:ssl-server:jar:1.0.8:test
[INFO] | +- io.netty:netty-codec-http:jar:4.2.4.Final:test
[INFO] | | +- io.netty:netty-common:jar:4.2.4.Final:test
[INFO] | | +- io.netty:netty-buffer:jar:4.2.4.Final:test
[INFO] | | +- io.netty:netty-transport:jar:4.2.4.Final:test
[INFO] | | | \- io.netty:netty-resolver:jar:4.2.4.Final:test
[INFO] | | +- io.netty:netty-codec-base:jar:4.2.4.Final:test
[INFO] | | +- io.netty:netty-codec-compression:jar:4.2.4.Final:test
[INFO] | | \- io.netty:netty-handler:jar:4.2.4.Final:test
[INFO] | | \- io.netty:netty-transport-native-unix-common:jar:4.2.4.Final:test
[INFO] | \- org.bouncycastle:bcpkix-jdk18on:jar:1.82:test
[INFO] | \- org.bouncycastle:bcutil-jdk18on:jar:1.82:test
[INFO] | \- org.bouncycastle:bcprov-jdk18on:jar:1.82:test
[INFO] \- org.java-websocket:Java-WebSocket:jar:1.6.0:test
[INFO] \- org.slf4j:slf4j-api:jar:2.0.13:test
Когда я запускаю mvn dependency:list он также правильно показывает, что slf4j-api присутствует, см. здесь:
Код: Выделить всё
[INFO] The following files have been resolved:
[INFO] io.github.hakky54:yaslf4j:jar:1.0.5:compile -- module nl.altindag.yaslf4j
[INFO] org.junit.jupiter:junit-jupiter-api:jar:5.14.0:test -- module org.junit.jupiter.api
[INFO] org.opentest4j:opentest4j:jar:1.3.0:test -- module org.opentest4j
[INFO] org.junit.platform:junit-platform-commons:jar:1.14.0:test -- module org.junit.platform.commons
[INFO] org.apiguardian:apiguardian-api:jar:1.1.2:test -- module org.apiguardian.api
[INFO] org.junit.jupiter:junit-jupiter-engine:jar:5.14.0:test -- module org.junit.jupiter.engine
[INFO] org.junit.platform:junit-platform-engine:jar:1.14.0:test -- module org.junit.platform.engine
[INFO] org.mockito:mockito-junit-jupiter:jar:5.11.0:test -- module org.mockito.junit.jupiter [auto]
[INFO] org.mockito:mockito-core:jar:5.11.0:test -- module org.mockito [auto]
[INFO] net.bytebuddy:byte-buddy-agent:jar:1.17.8:test -- module net.bytebuddy.agent
[INFO] org.objenesis:objenesis:jar:3.3:test -- module org.objenesis [auto]
[INFO] org.assertj:assertj-core:jar:3.27.6:test -- module org.assertj.core
[INFO] net.bytebuddy:byte-buddy:jar:1.17.8:test -- module net.bytebuddy
[INFO] io.github.hakky54:logcaptor:jar:2.12.1:test -- module nl.altindag.logcaptor
[INFO] ch.qos.logback:logback-classic:jar:1.3.15:test -- module ch.qos.logback.classic
[INFO] ch.qos.logback:logback-core:jar:1.3.15:test -- module ch.qos.logback.core
[INFO] org.apache.logging.log4j:log4j-to-slf4j:jar:2.25.1:test -- module org.apache.logging.log4j.to.slf4j
[INFO] org.apache.logging.log4j:log4j-api:jar:2.25.1:test -- module org.apache.logging.log4j
[INFO] org.slf4j:jul-to-slf4j:jar:2.0.17:test -- module jul.to.slf4j
[INFO] io.github.hakky54:ssl-server:jar:1.0.8:test -- module nl.altindag.ssl.server
[INFO] io.netty:netty-codec-http:jar:4.2.4.Final:test -- module io.netty.codec.http
[INFO] io.netty:netty-common:jar:4.2.4.Final:test -- module io.netty.common
[INFO] io.netty:netty-buffer:jar:4.2.4.Final:test -- module io.netty.buffer
[INFO] io.netty:netty-transport:jar:4.2.4.Final:test -- module io.netty.transport
[INFO] io.netty:netty-resolver:jar:4.2.4.Final:test -- module io.netty.resolver
[INFO] io.netty:netty-codec-base:jar:4.2.4.Final:test -- module io.netty.codec
[INFO] io.netty:netty-codec-compression:jar:4.2.4.Final:test -- module io.netty.codec.compression
[INFO] io.netty:netty-handler:jar:4.2.4.Final:test -- module io.netty.handler
[INFO] io.netty:netty-transport-native-unix-common:jar:4.2.4.Final:test -- module io.netty.transport.unix.common
[INFO] org.bouncycastle:bcpkix-jdk18on:jar:1.82:test -- module org.bouncycastle.pkix
[INFO] org.bouncycastle:bcutil-jdk18on:jar:1.82:test -- module org.bouncycastle.util
[INFO] org.bouncycastle:bcprov-jdk18on:jar:1.82:test -- module org.bouncycastle.provider
[INFO] org.java-websocket:Java-WebSocket:jar:1.6.0:test -- module org.java_websocket
[INFO] org.slf4j:slf4j-api:jar:2.0.13:test -- module org.slf4j
Странно то, что когда я запускаю mvn clean install с терминала, он работает. Когда я запускаю тест из intellij, как показано ниже, он терпит неудачу.

Как воспроизвести?
- запустить git clone https://github.com/Hakky54/ayza.git
- запустите git switch Feature/make-slf4j-logger-optional
- убедитесь, что настроена Java 11 или выше
- запустите mvn clean install
- Откройте проект из Intellij IDEA.
- Запустите тест из проводника, как показано на снимке экрана выше.
Просматривая дерево зависимостей maven, список зависимостей maven и объявления зависимостей в pom, у меня возникает ощущение, что все в порядке. Запуск его в терминале подтверждает, что он работает как положено. Итак, я чувствую, что у intellij возникают проблемы с разрешением зависимостей, но я не уверен. Кто-нибудь знает, что я мог сделать неправильно или мне следует настроить intellij по-другому? В качестве примечания: я запускал недействительные кеши. Я пробовал это на Mac OS и Linux/pop OS, но с теми же сбоями.
Подробнее здесь: https://stackoverflow.com/questions/797 ... -but-works
Мобильная версия