java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory после сборки .jar с помощью NetBeans

Я перенес свой проект с eclipse на netbeans, и теперь я получаю ошибку Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory, когда пытаюсь запустить файл .jar после его создания. Программа нормально работает с

Вот что у меня есть в моем пути к классам:

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.Свойства:

# 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

person user2892662    schedule 02.04.2015    source источник
comment
Похоже, это веб-приложение tomcat? Где конкретно развернут каждый из jar-файлов slf4j? И не могли бы вы отредактировать свой вопрос, включив в него полную трассировку стека для этого исключения, которое вы получаете?   -  person Kenster    schedule 02.04.2015
comment
это простая Java-программа, и я просто использую ее как регистратор. Это работало, когда я построил его с помощью eclipse. И я добавил исключение.   -  person user2892662    schedule 03.04.2015
comment
кроме того, мой файл log4j.properties находится в каталоге src.   -  person user2892662    schedule 03.04.2015
comment
Я видел ссылку на каталину в ваших log4j.properties и подумал, что это может быть stackoverflow.com/q/24342963/13317. Но похоже, что slf4j-api просто отсутствует в вашем пути к классу.   -  person Kenster    schedule 03.04.2015


Ответы (2)


Вероятно, slf4j.jar по какой-то причине не загружается. Вы можете включить некоторые банки в путь к классу:

  • slf4j-log4j12
  • slf4j-simple .. После всего очистите свой проект и запустите его. Он будет работать успешно.
person tuğrul altun    schedule 02.04.2015
comment
Когда я добавляю эти два, очищаю и собираю, я получаю следующее: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: найдена привязка в [jar:file:/C://workspace/External_Jar_Files/slf4j-1.7.11/slf4j-log4j12-1.7.11.jar! /org/slf4j/impl/StaticLoggerBinder.class] SLF4J: найдена привязка в [jar:file:/C:/workspace/External_Jar_Files/slf4j-1.7.11/slf4j-simple-1.7.11.jar!/org/slf4j/ импл/StaticLoggerBinder.class] - person user2892662; 02.04.2015
comment
Попробуйте удалить slf4j-log4j12-1.7.11.jar из пути к классам. - person Dinei; 08.10.2015

В случае, если вы получаете «java.lang.NoClassDefFoundError: Lorg/slf4j/Logger» при запуске сервера Tomcat,

  1. Тогда либо вы неправильно скопировали общий кот, либо
  2. Существует проблема с файлом «apache tomcat/conf/catalina.properties».

Решение

  1. Загрузите новый сервер Apache Tomcat и используйте его.
  2. Удалите существующий сервер, скопируйте сервер из загрузок и снова вставьте его в то же место и используйте его.
person RNaidu    schedule 29.03.2016