我在Mac上有一个intellij(2018.2)maven项目,具有以下代码:
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程序运行良好,这很奇怪,我希望我可以在此处提供一个提供程序jar:
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
我的问题:
我的命令行结果太奇怪了:如果我不给提供程序jar,它就可以工作;当我提供简单的日志提供程序时,它会给出异常!如何解释呢?
我试图在我的项目的“项目结构->库”中添加此简单的日志jar,然后再次运行。仍然不能解决问题。如何使其在intellij中工作?