Получение java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory исключение

188

я выполняю простую весеннюю программу внедрения зависимостей и получаю это исключение. Я уже включил файл common-logging1.1.1.jar и spring.jar. Не могли бы вы помочь выйти?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:119)
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:55)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:56)
    at com.client.StoryReader.main(StoryReader.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    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)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 6 more
skaffman
источник
2
Во-первых, дважды проверьте правильность вашего пути к классам. Во-вторых, попробуйте открыть банку и убедитесь, что она действительно содержит класс org.apache.commons.logging.LogFactory. Наконец, попробуйте отладку, установив точку останова в загрузчике классов.
Колибри
2
Все ответы ниже предлагают commons-loggingшаг назад. Используйте jcl-over-slf4jвместо этого.
2015 года
В Android добавьте testCompile 'commons-logging: commons-logging: 1.1.1' в app.gradle
Роджер

Ответы:

118

Я также столкнулся с теми же проблемами, чтобы исправить, скачать файлы JAR с ниже URL

http://commons.apache.org/logging/download_logging.cgi

и скопируйте в вашу папку lib, решите вашу проблему.

Manikandan
источник
2
это не работает для меня, даже после добавления вышеупомянутой фляги обыкновенного в classpath
Дин Джон
2
Ни для меня. Эти ребята сломаны. Это так сложно.
Весос де Кесо
114

Если вы используете maven для управления зависимостями, добавьте следующую строку в ваш файл pom.xml:

<dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
</dependency>
Аска
источник
19

commons-logging-1.1.1.jar или jcl-over-slf4j-1.7.6.jar al

Если вы используете Maven, используйте приведенный ниже код.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
Парамеш Корракути
источник
2
Включение «jcl-over-slf4j» было единственным решением, которое работает для меня. У меня уже была регистрация общего доступа в моих зависимостях.
Итало Борссатто
Я использую весеннюю загрузку версии 2.0.1. Освобождаю с Maven. Это было единственное решение, которое сработало и для меня.
Карлос Нант,
18

У меня была та же проблема, и я решил ее, просто добавив commons-logging.jarпуть к классам.

stacky
источник
8

Добавление commons-logging.jar или commons-logging-1.1.jar решит эту проблему ...

Приятель
источник
6

Я уже включил Common-Logging1.1.1.jar и ...

Вы уверены, что правильно написали имя файла JAR? Я думаю, что это должно быть commons-logging-1.1.1.jar(обратите внимание на дополнительное -в названии). Также проверьте правильность имени каталога.

NoClassDefFoundError всегда означает, что класс не может быть найден, поэтому, скорее всего, ваш путь к классу неверен.

Jesper
источник
2
NoClassDefFoundErrorтакже может быть вызвано другими угловыми случаями, например, когда инициализаторы класса терпят неудачу в неясных обстоятельствах.
Скаффман
Кроме того, если он получает NoClassDefFoundError из-за сбоя создания экземпляра класса, то он должен сначала получить исключение ExceptionInInitializerError (если, конечно, оно не было перехвачено без вывода сообщений).
Колибри
И не забывайте "с"commons-logging-1.1.1.jar
Глен Лоуренс
@GlennLawrence Спасибо, исправил имя.
Джеспер
6

Настройка области компиляции сделала это для меня

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
Патрик Брильмайер
источник
1
Решил мою ситуацию. При запуске тестовых случаев Mockito я получил эту ошибку и решил эту зависимость в pom.xml.
Venugopal
4

Попробуйте выполнить полную очистку каталога назначения / развертывания, чтобы приложение избавилось от устаревших библиотечных файлов. Создайте новую сборку и убедитесь, что commons-logging.jar действительно находится в правильной папке lib. Он может не включаться при сборке библиотеки для приложения.

emills
источник
4

Проблема решена добавлением commons-logging.jar

Имп файлы есть,

antlr-runtime-3.0.1

org.springframework.aop-3.1.0.M2

org.springframework.asm-3.1.0.M2

org.springframework.aspects-3.1.0.M2

org.springframework.beans-3.1.0.M2

org.springframework.context.support-3.1.0.M2

org.springframework.context-3.1.0.M2

org.springframework.core-3.1.0.M2

org.springframework.expression-3.1.0.M2

commons-logging-1.1.1
тьфу
источник
3

Два варианта (как минимум):

  1. Добавьте флягу регистрации общего доступа к своему файлу, скопировав его в локальную папку.

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

Поэтому не указывайте банку на внешнюю папку.

ИЛИ...

  1. Если вы действительно не хотите добавлять его локально, потому что делите банку между проектами, тогда ...

Если вы используете экземпляр tc-сервера, то вам нужно добавить jar-файл как внешний jar-файл в конфигурации запуска экземпляра сервера.

перейдите к запуску от имени, запустите настройки ..., {ваш экземпляр tc-сервера}, а затем перейдите на вкладку Class Path.

Затем добавьте флягу регистрации общего достояния.

devaaron
источник
3

У меня такая же проблема, как и у тебя. Наконец я проверил версию apache, обладающую классом. Я обнаружил, что версия 1.0.4 имеет класс.

Попробуйте использовать версию 1.0.4 вместо 1.1.X или 1.2.X

Мои зависимости:

    <dependencies>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-client-java</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.4</version>
        </dependency>
    </dependencies>

Мой код Java

J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia");
J4pReadRequest req = new J4pReadRequest("java.lang:type=Memory","HeapMemoryUsage");
req.setPath("used");
J4pReadResponse resp = j4pClient.execute(req);
System.out.println(resp.getValue());

Мой результат:

130489168

Проверьте также, что ваши maven-зависимости хорошо импортированы.

歌 永 _
источник
0

Просто проверьте, был ли файл commons-logging.jar добавлен в ваши библиотеки и путь к классам. У меня была такая же проблема, и это было из-за этого. dhammikas-

dhammikas
источник
0

Я обычно назначаю classpath переменной и затем проверяю это. Я написал небольшой скрипт ruby, который я включил в свои скрипты запуска, который проверяет путь к классу перед запуском java . Проверка пути к классам перед запуском JVM сэкономила мне много времени на устранение подобных проблем.

brianegge
источник
2
Вы должны рассмотреть возможность использования инструментов, таких как Maven вместо этого.
Неовибрант
0

Эй, я следовал за учебником на tutorialpoint.com. Добавьте после завершения Шаг 2. Установите Apache Common Logging API: необходимо импортировать в проект внешние библиотеки jar из файлов, загруженных на этом шаге. Для меня имя файла было « commons-logging-1.1.1 ».

Третий
источник
0

Если вы используете это на Android, то обратите внимание, что, очевидно, java.beansпакет не является полным на Android. Чтобы попытаться исправить это на Android, попробуйте следующее:

  1. Загрузите android-java-air-bridge.jar (в настоящее время кнопка загрузки находится внизу страницы или прямая ссылка здесь )
  2. Скопируйте загруженный файл в ваш [APPROOT] / app / libs (или свяжите jar любым другим способом)
  3. Измените import ***утверждения к тому из воздушного моста. Например, import javadz.beanutils.BeanUtilsвместоimport org.apache.commons.beanutils.BeanUtils;
  4. Очистить и перестроить проект

источник 1 , источник 2

Я извиняюсь, поскольку понимаю, что это не совсем ответ на вопрос, хотя эта SO страница часто появляется при поиске NoClassDefFoundError: Failed resolution of: beanUtilsошибок, сгенерированных Android .

Voy
источник
0

Я получал ту же ошибку, пока присутствовала банка. Решение не сработало. Что работало, так это удаление jar из файловой системы (из каталога .m2), а затем очистка проекта maven.

Анмол Гупта
источник
0

У меня та же проблема в Eclipse IDE, мое решение было: Щелкните правой кнопкой мыши в Мой проект> Свойства

введите описание изображения здесь

Нажмите в Maven и напишите: jar в проекте Active Maven

введите описание изображения здесь

Наконец, Применить и Закрыть

Юлием Алавез
источник
0

В моем случае я тестировал приложение Tomcat в Eclipse и получил эту ошибку. Я решил это, проверив .classpathфайл и исправив эту запись:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

Атрибут org.eclipse.jst.component.dependencyотсутствовал.

Павел
источник
-1

Проверьте, правильно ли импортированы банки. Я импортировал их, используя путь сборки. Но он не распознал банку в папке WAR / lib. Позже я скопировал этот же файл в папку war / lib . Теперь работает нормально. Вы можете обновить / очистить свой проект.

Сибичакраварти Гунасекаран
источник
-2

Здравствуйте, друзья, если вы получили исключение, не найденное классом, в коде гибернации, это проблема jar-файлов. Здесь в основном две проблемы
хочу сказать, что ваша старая версия hibernate может быть 3.2 ниже. Поэтому, если вы попробуете выше 3.6, то это будет работает отлично

2.Первый проверяет соединение с базой данных. Если база данных работает должным образом, это была ошибка в вашей программе или файле jar.

пожалуйста, проверьте эти две проблемы, если они также не работают, вы пытались IDE. Я использую netbeanside 6.9 version.here hibernate работает нормально. Вы не получаете никаких ошибок от класса, не являющегося исключением ..

Я надеюсь, что этот помогает больше

Krishnarjun
источник
-2

Решение - добавить файл jar common-logging.xx

Сэчин
источник
-2

попробуйте добавить эту зависимость org.apache.commons commons-exec 1.3

user1244663
источник
-3

Если все остальное терпит неудачу, как это было для меня, попробуйте поместить commons-logging-xyzjar в вашу директорию lib Tomcat. Это решило проблему! Кстати, я использую Tomcat 6.

Боб В.
источник
назвать вещь? О чем ты говоришь?
Боб В.