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 클래스가 포함되어 있는지 확인하십시오. 마지막으로 클래스 로더에서 중단 점을 설정하여 디버깅을 시도하십시오.
Kolibri

2
아래에 제안 된 모든 대답 commons-logging은 한 걸음 뒤로입니다. jcl-over-slf4j대신 사용하십시오 .
opyate 2019

안드로이드에서 app.gradle에 testCompile 'commons-logging : commons-logging : 1.1.1'을 추가하십시오
Roger Garzon Nieto

답변:



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"를 포함하면 나에게 맞는 유일한 솔루션이었습니다. 나는 이미 의존성에 공통 로깅을 가지고있었습니다.
Italo Borssatto

maven과 함께 스프링 부트 버전 2.0.1.RELEASE를 사용하고 있습니다. 이것은 나에게도 유일한 해결책이었습니다.
Carlos Nantes

18

나는 같은 문제가 있었고 commons-logging.jar클래스 경로에를 추가하여 해결했습니다 .


8

commons-logging.jar 또는 commons-logging-1.1.jar를 추가하면이 문제가 해결됩니다 ...


6

나는 이미 common-logging1.1.1.jar을 포함했고 ...

JAR 파일 이름의 철자를 정확히 맞습니까? 아마 그것이 있어야한다고 생각합니다 commons-logging-1.1.1.jar( -이름에 여분 의 것을 주목하십시오 ). 디렉토리 이름이 올바른지 확인하십시오.

NoClassDefFoundError 항상 클래스를 찾을 수 없으므로 클래스 경로가 올바르지 않을 가능성이 높습니다.


2
NoClassDefFoundError클래스 이니셜 라이저가 모호한 상황에서 실패하는 경우와 같은 다른 경우에도 발생할 수 있습니다.
skaffman

또한 클래스 인스턴스화가 실패하여 NoClassDefFoundError가 발생하면 먼저 ExceptionInInitializerError 예외가 발생해야합니다 (물론 자동으로 잡히지 않는 한).
Kolibri

그리고 "s"를 잊지 마세요commons-logging-1.1.1.jar
Glenn Lawrence

@GlennLawrence 감사합니다. 이름을 수정했습니다.
Jesper

6

컴파일 할 범위를 설정하면 나에게 도움이되었습니다.

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>

1
내 상황을 해결했습니다. Mockito 테스트 사례를 실행할 때이 오류가 발생하여 pom.xml의 종속성이 해결되었습니다.
venugopal

4

오래된 라이브러리 jar을 제거하려면 앱의 대상 / 배포 디렉토리를 완전히 정리하십시오. 새로 빌드하고 commons-logging.jar이 실제로 올바른 lib 폴더에 있는지 확인하십시오. 애플리케이션의 라이브러리를 빌드 할 때 포함되지 않을 수 있습니다.


4

commons-logging.jar를 추가하여 해결 된 문제

Imp 파일은

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. commons-logging jar을 로컬 폴더에 복사하여 파일에 추가하십시오.

참고 : jar을 연결하면 서버에 문제가 발생하고 빌드 경로에 추가되었지만 서버 시작 문제를 해결하지 못하는 이유가 발생할 수 있습니다.

따라서 항아리를 외부 폴더로 가리 키지 마십시오.

또는...

  1. 프로젝트간에 jar 파일을 공유하기 때문에 로컬에 추가하고 싶지 않으면 ...

tc 서버 인스턴스를 사용하는 경우 서버 인스턴스 실행 구성에 항아리를 외부 항아리로 추가해야합니다.

다음으로 실행, 구성 실행 ..., {your tc server instance}, 클래스 경로 탭으로 이동하십시오.

그런 다음 commons-logging jar을 추가하십시오.


3

당신과 같은 문제가 있습니다. 마지막으로 클래스를 소유 한 아파치 버전을 확인했습니다. 버전 1.0.4에 클래스가 있음을 발견했습니다.

1.1.X 또는 1.2.X 대신 1.0.4 버전을 사용하십시오.

내 의존성 :

    <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>

내 자바 코드

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가 라이브러리와 클래스 경로에 추가되었는지 확인하십시오. 같은 문제가 있었기 때문입니다. 다미 카스


0

나는 일반적으로 클래스 경로를 변수에 할당 한 다음 확인합니다. java 시작하기 전에 클래스 경로의 유효성검사하는 시작 스크립트에 포함하는 작은 루비 스크립트를 작성했습니다 . JVM이 시작되기 전에 클래스 경로를 검증하면 이러한 유형의 문제를 해결하는 데 많은 시간이 절약됩니다.


2
대신 Maven과 같은 도구를 사용하는 것이 좋습니다.
Neovibrant

0

안녕하세요, tutorialpoint.com의 튜토리얼을 따르고있었습니다. 2 단계-Apache Common Logging API 설치 완료 후 추가 : 이 단계에서 다운로드 한 파일에서 외부 jar 라이브러리를 프로젝트로 가져와야 합니다 . 나에게 파일 이름은 " commons-logging-1.1.1 "이었다.


0

Android에서이를 실행하는 경우 Android에서 java.beans패키지가 완료되지 않은 것 같습니다 . Android에서 수정하려면 다음을 시도하십시오.

  1. 다운로드 안드로이드 - 자바 - 공기 bridge.jar을 (현재 다운로드 버튼은 페이지 또는 하단에 여기에 직접 링크 )
  2. 다운로드 한 jar 파일을 [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오류를 검색 할 때 많이 나타납니다 .


0

항아리가있는 동안 같은 오류가 발생했습니다. 해결책이 없습니다. 효과는 파일 시스템 (.m2 디렉토리에서)에서 jar을 삭제 한 다음 maven 프로젝트를 정리하는 것이 었습니다.


0

나는 이클립스 IDE에서 같은 문제가, 내 솔루션이었다 : 마우스 오른쪽 클릭 내 프로젝트> 속성

여기에 이미지 설명을 입력하십시오

클릭 메이븐 및 쓰기 : 항아리활성 메이븐 프로젝트

여기에 이미지 설명을 입력하십시오

마지막으로 적용 및 닫기


0

제 경우에는 일식에서 Tomcat 앱을 테스트하고 있었고이 오류가 발생했습니다. .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 폴더의 jar을 인식하지 못했습니다. 나중에 동일한 jar를 war / lib 폴더에 복사했습니다 . 지금은 잘 작동합니다. 프로젝트를 새로 고치거나 정리할 수 있습니다.


-2

안녕하세요 친구가 클래스를 찾지 못하면 최대 절전 모드 코드에서 예외를 발견하면 jar 파일의 문제입니다. 여기서는 주로 두 가지 문제
가 있습니다. 잘 작동합니다

2.first는 데이터베이스 연결을 확인합니다. 데이터베이스가 제대로 작동하면 ur 프로그램이나 jar 파일에서 실수였습니다.

IDE가 작동하지 않으면이 두 가지 prioblem을 확인하십시오. netbeanside 6.9 버전을 사용하고 있습니다. 여기서 최대 절전 모드로 작동합니다. 예외가 아닌 클래스에서 오류가 발생하지 않습니다.

나는 이것이 더 도움이되기를 바랍니다


-2

해결책은 common-logging.xx jar 파일 을 추가 하는 것입니다


-2

이 종속성을 추가하십시오 org.apache.commons commons-exec 1.3


-3

다른 모든 것이 실패하면 Tomcat lib 디렉토리에 commons-logging-xyzjar을 넣으십시오. 문제가 해결되었습니다! BTW, Tomcat 6을 사용하고 있습니다.


이름 이요? 무슨 소리 야?
Bob V.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.