java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory在使用NetBeans构建.jar之后

java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory在使用NetBeans构建.jar之后,java,netbeans,log4j,slf4j,Java,Netbeans,Log4j,Slf4j,我将我的项目从eclipse移到了netbeans,现在我在构建.jar文件后尝试运行该文件时,在主线程java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory中收到异常。该程序从开始运行良好 以下是我的类路径中的内容: slf4j-api-1.7.11.jar slf4j-ext-1.7.11.jar log4j-1.2.17.jar 这是我的日志: import org.slf4j.Logger; import org.slf4j.Log

我将我的项目从eclipse移到了netbeans,现在我在构建.jar文件后尝试运行该文件时,在主线程java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory中收到异常。该程序从开始运行良好

以下是我的类路径中的内容:

slf4j-api-1.7.11.jar
slf4j-ext-1.7.11.jar
log4j-1.2.17.jar
这是我的日志:

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

public class Log {

    public static final Logger logger = LoggerFactory.getLogger(Log.class); 

    public Log(){

    }
}
log4j.properties:

# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender

#Redirect to Tomcat logs folder
#log4j.appender.file.File=${catalina.home}/logs/logging.log

log4j.appender.file.File=C:\\Log.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
当我想记录一些东西时,我会调用它,这就是它爆炸并抛出错误的地方:

Log.logger.info("");
例外情况:

Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
        at com.xxx.xxxx.Log.<clinit>(Log.java:8)
        at com.xxx.xxxx.MainGui.PrintHeaderForLog(MainGui.java:319)
        at com.xxx.xxxx.MainGui.<init>(MainGui.java:69)
        at com.xxx.xxxx.MainGui.<clinit>(MainGui.java:48)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        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)
        ... 4 more

可能由于某种原因,slf4j.jar没有被加载。您可以在类路径中包含一些jar:

slf4j-log4j12 slf4j简单。。 毕竟,清理项目并运行。它将成功运行。
在这种情况下,在启动Tomcat服务器时,获取java.lang.NoClassDefFoundError:Lorg/slf4j/Logger

那么要么您没有正确复制共享的tomcat,要么 apache tomcat/conf/catalina.properties文件存在问题。 解决方案

下载新的ApacheTomcat服务器并使用它。 删除现有服务器,从下载中复制服务器,然后再次将其粘贴到同一位置并使用它。
看起来这是一个tomcat web应用程序?每个slf4j JAR具体部署在哪里?你能把你的问题编辑成包含你得到的这个异常的完整stacktrace吗?这是一个简单的java程序,我只是把它作为一个记录器使用。当我用eclipse构建它时,它正在工作。另外,我的log4j.properties文件位于src目录中。我在您的log4j.properties中看到了catalina引用,并认为它可能是。但看起来您的类路径中缺少了slf4j api。当我添加这两个,clean和build时,我得到了这样的结果:slf4j:类路径包含多个slf4j绑定。SLF4J:在[jar:file:/C://workspace/External\u jar\u Files/SLF4J-1.7.11/SLF4J-log4j12-1.7.11.jar!/org/SLF4J/impl/StaticLoggerBinder.class]SLF4J:在[jar:file:/C:/workspace/External\u jar\u Files/SLF4J-1.7.11/SLF4J-simple-1.7.11.jar!/org/SLF4J/impl/StaticLoggerBinder.class]中找到绑定尝试从类路径中删除slf4j-log4j12-1.7.11.jar。