从命令行-java.lang.ClassNotFoundException:org.slf4j.LoggerFactory
嗯。我知道还有其他类似的问题,这不是slf4j第一次踢我屁股。但是,我在环境变量中查看了我的路径,下面是路径中包含的两个SLF4JJAR文件以及项目依赖项从命令行-java.lang.ClassNotFoundException:org.slf4j.LoggerFactory,java,maven,slf4j,Java,Maven,Slf4j,嗯。我知道还有其他类似的问题,这不是slf4j第一次踢我屁股。但是,我在环境变量中查看了我的路径,下面是路径中包含的两个SLF4JJAR文件以及项目依赖项 C:\Users\pdl\.m2\repository\org\slf4j\slf4j-api\1.7.13\slf4j-api-1.7.13.jar C:\Users\pdl\.m2\repository\org\slf4j\slf4j-simple\1.7.13\slf4j-simple-1.7.13.jar 这是我的pom文件中的内容
C:\Users\pdl\.m2\repository\org\slf4j\slf4j-api\1.7.13\slf4j-api-1.7.13.jar
C:\Users\pdl\.m2\repository\org\slf4j\slf4j-simple\1.7.13\slf4j-simple-1.7.13.jar
这是我的pom文件中的内容:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-ext</artifactId>
<version>1.7.13</version>
</dependency>
org.slf4j
我可以从IDE(Netbeans)运行应用程序,但当我尝试从命令提示符运行时,会出现以下错误
C:\Users\pdl\Projects\WeatherTestDrive>java -cp WeatherApp.jar;WeatherOpenWeatherMap.jar;WeatherClient.jar com.a2i.weatherclient.Client
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at com.a2i.weatherclient.Client.<clinit>(Client.java:22)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
C:\Users\pdl\Projects\WeatherTestDrive>java-cp WeatherApp.jar;WeatherOpenWeatherMap.jar;WeatherClient.jar com.a2i.WeatherClient.Client
线程“main”java.lang.NoClassDefFoundError中出现异常:org/slf4j/LoggerFactory
位于com.a2i.weatherclient.Client.(Client.java:22)
原因:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
... 还有一个
在我的VM类路径中添加slf4j,我仍然会得到错误
C:\Users\pdl\Projects\WeatherTestDrive>java -cp WeatherApp.jar;WeatherOpenWeatherMap.jar;WeatherClient.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j-api\1.7.13\slf4j-api-1.7.13.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j-simple\1.7.13\slf4j-simple-1.7.13.jar com.a2i.weatherclient.Client
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at com.a2i.weatherclient.Client.<clinit>(Client.java:22)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
C:\Users\pdl\Projects\WeatherTestDrive>java-cp WeatherApp.jar;WeatherOpenWeatherMap.jar;WeatherClient.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j-api\1.7.13\slf4j-api-1.7.13.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j simple\1.7.13\slf4j-simple-1.7.13.jar com.a2i.weatherclient.Client
线程“main”java.lang.NoClassDefFoundError中出现异常:org/slf4j/LoggerFactory
位于com.a2i.weatherclient.Client.(Client.java:22)
原因:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
... 还有一个
有人能帮我找出我做错了什么吗
我应该将slf4j api添加到依赖项而不是slf4j exe吗?或者别的什么
我想无论我使用哪一个,我都应该将它添加到我的VM类路径中
它甚至需要在我的pom文件中吗
------------------------------------编辑------------------------------------------
我创建了一个简单的HelloWorld应用程序来记录我的名字。当我将Logger添加到Hello类中时,它以红色突出显示,因此我将slf4j simple添加到依赖项中,并随附了slf4j api。但当我打开pom文件时,只添加了slf4j simple:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.13</version>
</dependency>
org.slf4j
slf4j简单
1.7.13
当我从IDE运行时,一切都很好。但当我从命令行运行时,仍然会出现错误:
C:\Users\pdl\Projects\HelloWorld\target>java -cp HelloWorld-1.0-SNAPSHOT.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j-simple\1.7.13\slf4j-simple-1.7.13.jar com.a2i.helloworld.Hello
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at com.a2i.helloworld.Hello.<clinit>(Hello.java:17)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
C:\Users\pdl\Projects\HelloWorld\target>java-cp HelloWorld-1.0-SNAPSHOT.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j simple\1.7.13\slf4j-simple-1.7.13.jar com.a2i.helloworld.Hello
线程“main”java.lang.NoClassDefFoundError中出现异常:org/slf4j/LoggerFactory
在com.a2i.helloworld.Hello。(Hello.java:17)
原因:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
... 还有一个
您的VM类路径中slf4j在哪里?尝试按如下方式运行:
java -cp WeatherApp.jar;WeatherOpenWeatherMap.jar;WeatherClient.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j-api\1.7.13\slf4j-api-1.7.13.jar;C:\Users\pdl\.m2\repository\org\slf4j\slf4j-simple\1.7.13\slf4j-simple-1.7.13.jar com.a2i.weatherclient.Client
您在运行时缺少slf4j。希望对您有所帮助。Maven以及pom文件旨在为您构建类路径。
所以,是的,您喜欢使用的所有依赖项都应该在pom文件中
关于slf4j:
slf4j api是一个仅定义api(或接口)的依赖项。要使其工作,还必须添加一个实现。请解释。因此,您必须再添加至少一个依赖项。例如:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
回写
回归经典
1.1.3
关于slf4j ext,我很确定您不需要它来简单地记录日志。也许你有更详细的用例
要从命令行启动应用程序,必须使用-cp
参数运行java。类路径是所有使用过的类或包含类的存档的列表。对于具有大量依赖关系的应用程序,手动构建可能会变得非常麻烦
使用mvn dependency:build classpath
让maven为您构建这一大串jar路径。这涉及到在IntelliJ中构建的Java SE项目,其中包括slf4j或任何其他库(即slf4j-api-1.7.26.jar=>api&slf4j-simple-1.7.26.jar=>api实现)
第1步:
在项目根目录中创建文件夹\libs并将两个jar放在其中
第2步:
生成代码并确保记录器在IDE中正常工作
第三步:
启动cmd并在。\out目录中使用cd命令导航,直到安装包为止
检查main.java的第1行。i、 e
cd C:\Users…\out…\testcp
第四步
右键单击sjf4j api jar并复制路径(路径#1)&
右键单击sjf4j简单jar并复制路径(路径#2)&
右键单击Main.class并复制路径(路径#3.SOS:排除Main.class部分)
现在,运行带有-cp标志的java命令,如下所示:
java-cp路径#1;路径#2;路径#3;org.me.Main
就这样
注意:Eclipse用户不会遇到这个问题,因为这是通过使用构建路径实用程序来解决的 不!只是记录。我正在使用一个简单的HelloWorld应用程序。查看我的编辑。谢谢。我现在正在使用一个简单的HelloWorld应用程序。即使将slf4j添加到运行时,仍然存在相同的问题。就是这样!!!!耶!当我