Получение 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

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, решите вашу проблему.


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путь к классам.



6

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

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

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


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. Он может не включаться при сборке библиотеки для приложения.


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.

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


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-


0

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


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 .


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 работает нормально. Вы не получаете никаких ошибок от класса, не являющегося исключением ..

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




-3

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


назвать вещь? О чем ты говоришь?
Боб В.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.