从命令行-java.lang.ClassNotFoundException:org.slf4j.LoggerFactory

从命令行-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文件中的内容

嗯。我知道还有其他类似的问题,这不是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文件中的内容:

    <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添加到运行时,仍然存在相同的问题。就是这样!!!!耶!当我