java slf4j завершается с ошибкой в ​​intellij (без провайдера журналов), но работает нормально в командной строке, почему? - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть проект intellij (2018.2) maven на mac, имеющий следующий код:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class useSlf {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(useSlf.class);
        logger.info("Hello World");
    }
}

Мой pom.xml получает эту зависимость:

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
</dependencies>

В командной строке он запускается:

$java  useSlf
2018-11-03 19:53:59,137 [myid:] - INFO  [main:useSlf@7] - Hello World

Но когда я попытался запустить его в intellij, это дает:

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/bin/java - 

Dfile.encoding = UTF-8 -classpath ...... useSlf

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further 
details.

Это странно. В моем mac, bash проверяет:

echo $CLASSPATH

В моем $ CLASSPATH нет провайдера журналов, и моя java-программа работает нормально, это странно, я думаю, что я должен дать здесь провайдер, например:

java -cp ~/Downloads/slf4j-simple-1.8.0-beta2.jar:. useSlf
Exception in thread "main" java.lang.NoClassDefFoundError: 
org/slf4j/LoggerFactory
    at useSlf.main(useSlf.java:6)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

Мои вопросы:

  1. Мои результаты командной строки такие странные: если я не дам провайдера банку, это сработает; когда я даю простой провайдер логов, он дает исключение! Как это объяснить?

  2. Я попытался добавить этот простой файл журнала в «Структура проекта -> библиотека» для моего проекта и запустить снова. Все еще не решает проблему. Как я могу заставить его работать в intellij?

...