【问题标题】:How can I resolve java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory?如何解决 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory?
【发布时间】:2015-03-18 23:25:32
【问题描述】:

我正在尝试在我的 IDE 之外运行我的项目,但我得到了这个 java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

它在 IDE 中运行良好,但是当尝试从批处理文件运行它时,它会加载应用程序面板并引发此错误。

我已经在批处理文件中包含了所有库,它们都存在并且它们与在 IDE 中使用的库相同。

java -cp bin;deps/InetAddressLocator.jar;deps/lombok.jar;deps/commons-collections4-4.0.jar;deps/mina-core-1.1.7.jar;deps/mysql.jar;deps/slf4j-api-1.6.1;deps/slf4j-simple-1.6.1.jar; game.engine.GameEngine true 0 0
pause

我该如何解决这个问题?

[02/06/2014 12:42:52 AM]: Exception in thread "main" 
[02/06/2014 12:42:52 AM]: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
[02/06/2014 12:42:52 AM]:   at org.apache.mina.util.NamePreservingRunnable.<init>(NamePreservingRunnable.java:32)
[02/06/2014 12:42:52 AM]:   at org.apache.mina.transport.socket.nio.SocketAcceptor.startupWorker(SocketAcceptor.java:165)
[02/06/2014 12:42:52 AM]:   at org.apache.mina.transport.socket.nio.SocketAcceptor.bind(SocketAcceptor.java:141)
[02/06/2014 12:42:52 AM]:   at game.engine.GameEngine.main(GameEngine.java:125)
[02/06/2014 12:42:52 AM]: Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
[02/06/2014 12:42:52 AM]:   at java.net.URLClassLoader$1.run(Unknown Source)
[02/06/2014 12:42:52 AM]:   at java.net.URLClassLoader$1.run(Unknown Source)
[02/06/2014 12:42:52 AM]:   at java.security.AccessController.doPrivileged(Native Method)
[02/06/2014 12:42:52 AM]:   at java.net.URLClassLoader.findClass(Unknown Source)
[02/06/2014 12:42:52 AM]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[02/06/2014 12:42:52 AM]:   at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[02/06/2014 12:42:52 AM]:   at java.lang.ClassLoader.loadClass(Unknown Source)
[02/06/2014 12:42:52 AM]:   ... 4 more

【问题讨论】:

  • 将 slf4j JAR 添加到 CLASSPATH。这就是那个例外的意思。它是 Java 101。
  • 你的当前目录是什么,因为 deps/ 是一个相对路径。仅当您从 deps 的父目录运行命令时它才会起作用
  • 它在类路径中? deps/slf4j-api-1.6.1;deps/slf4j-simple-1.6.1.jar

标签: java


【解决方案1】:

java -cp bin;deps/InetAddressLocator.jar;deps/lombok.jar;deps/commons-collections4-4.0.jar;deps/mina-core-1.1.7.jar;deps/mysql.jar;deps/slf4j-api-1.6.1;deps/slf4j-simple-1.6.1.jar; game.engine.GameEngine true 0 0

slf4j-api-1.6.1 最后缺少“.jar”。它应该读作“slf4j-api-1.6.1.jar”

【讨论】:

  • deps/slf4j-api-1.6.1;它在那里
  • 最后是否包含“.jar”?
  • 哦,我刚刚意识到我错过了扩展!感谢您指出了这一点。 掌心
【解决方案2】:

我认为,最好与Manifest Files 合作。

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    相关资源
    最近更新 更多