나는 왜 노클레스데파운더로 자바로 가져오는?

나는 '받고' 노클레스데파운더로 달릴 땐 내 Java 프로그램. 일반적으로 이 오류의 원인은 무엇인가?

질문에 대한 의견 (4)

이는 동시에 가능한 it& # 39 의 인해 컴파일 타임 및 런타임, it& # 39 을 classpath 일치하지 않는 것은 아니다.

2 ~ 3 개의 다른 예외 직선입니다 유지하는 것이 중요한 lionbridge 의 헤드입니다 이 경우:

  1. '' 이 있음을 클래스용 classpath 에 자바드란g. 클라스노푸네스세페시옹 기능을 idfsysobject. 찾을 수 없습니다. 우리가 할 수 있으며, 클래스 정의 클래스를 나타냅니다 읽어들입니다 classpath 에 존재하지 않았다.
    • '이 JVM 에서 생각하고 있음을 idfsysobject. 자바드란g.노클레스데파운더로 2.' 는 클래스 정의 규정에 대한 내부 데이터 구조를 하지 않았고, 클래스 파일을 찾을 수 있습니다. 이는 classpath 에서 로드되었는지 다를 수 있다고 할 수 없습니다. 일반적으로 우리가 이전에 시도한 것입니다 하지만 어떤 이유로 classpath 에서 클래스 로드하기에 실패했습니다. we& # 39 - 이제 다시 사용하려는 클래스, re (및 카타시안 불러오시길 필요한 만큼 마지막으로 못했다) 이지만, re not even we& # 39 이 앞서 갈 수 있기 때문에 그것을 하지 로드중 시도하시려면 로드하기에 (그리고 우리가 다시 합리적으로 용의자요 실패하게 된다). 이전 불량의 박스트롤의 클라스노푸네스세페시옹 호스트였든 렉스티오니니니시알이제러로 (장애가 손실됨을 정적 초기화하지 블록) 또는 임의의 수의 다른 문제. 요점이지) 는 노클레스데파운더로 classpath 문제가 아니다.
해설 (12)
해결책

이 이유는 클래스 파일이 있을 때 해당 코드를 컴파일 타임에 달려 있는 것은 아니지만 http://moss. dell. 런타임용으로 개발하십시오. 사용자 제작 기간 및 런타임 클래스 변경분 찾습니다.

해설 (7)

다음은 자바드란g.노클레스데파운더로 설명하기 위해 '코드'. # 39 의 Jared& 오토메이티드 자세한 설명을 참조하십시오.

  • 노클레스데포네로르뎀오자바 *
public class NoClassDefFoundErrorDemo {
    public static void main(String[] args) {
        try {
            // The following line would throw ExceptionInInitializerError
            SimpleCalculator calculator1 = new SimpleCalculator();
        } catch (Throwable t) {
            System.out.println(t);
        }
        // The following line would cause NoClassDefFoundError
        SimpleCalculator calculator2 = new SimpleCalculator();
    }

}
  • 심렉알쿠라토리자바 *
public class SimpleCalculator {
    static int undefined = 1 / 0;
}
해설 (3)
  • 노클레스데파운더로 java*를 에서

  • Definition:*

  1. 자바 가상 머신 () 는 특정 시간 수업을 하는 것은 http://ipw2100.sourceforge. 컴파일하십시오 런타임용으로 개발하십시오 찾을 수 없습니다.

  2. Class 는 자바 가상 머신 (jvm) 에 때 아닌 컴파일 타임 동안 사용할 수 있는 경우 classpath 런타임용으로 개발하십시오.

! [입력하십시오. 이미지 여기에 설명을] [1]

  • Examples:*
  1. 이 수업은 Classpath 에서 않을 수 없다 하지만 vmnet sure shot 길을 여러 차례 투명지에 여바바 시스템.제프로페티 인쇄하려면 됩니다 (java.classpath&quot ";) 또 적어도 어느 정도인지 알 수 있습니다 확보하십시오 인쇄인쇄 classpath 에서 실제 런타임용으로 개발하십시오 classpath.

  2. 단순한 예로 노클레스데파운더로 는 클래스 또는 때때로 jar& classpath 에 속한 누각되었습니다 JAR 파일 또는 JAR 가 추가되지 않았고 # 39 의 이름으로 바뀌었고, 누군가에 의해 같은 동료 중 하나에 내 경우에는 문제가 되고 있는 프로그램 tibco_v3.jar 변경되었습니까 티브코스자 agent. 자바드란g.노클레스데파운더로 쉐퍼드도 what& # 39 의 잘못된 것이다.

  3. 그냥 시도하시겠습니까 classpath 옵션과 함께 사용할 수 있는 실행하십시오 명시적으로 - 당신이 생각하는 classpath 에 apc® 아웃하기로 it& # 39 의 확실한 파선-짧은 예중이 어졌다면 it& # 39 누군가가 재정의을 자바 클래스.

  4. Jar 파일은 자바 가상 머신 (jvm) 에 대한 권한 노클레스데파운더로 문제가 발생할 수도 있습니다.

  5. 자바 가상 머신 (jvm) 에 대한 오식 노클레스데파운더로 xml 구성 발생할 수도 있습니다. 6.을 (를) 에 정의된 클래스 원하는거요 패키지로의 컴파일됨 경우 같은 패키지 안에 있는 동안, 싫어하겠어 로드중 경우 자바 가상 머신 (jvm) 에 던져 노클레스데파운더로 제프리트 같은 것입니다.

  • 가능한 Solutions:*
  1. 자바 클래스 (class 에서 사용할 수 없습니다.
  2. J2ee 환경 등급에 비해 가시도로 작업하는 경우 여러 클라슬로이더 자바드란g.노클레스데파운더로 http://schmidt. devlib. 사례 및 책정안 섹선에서 자세한 토론 중 발생할 수도 있습니다.
  3. 확인할지 자바드랑드렉스티오니니니시알이제러로 in your 로그 파일. 노클레스데파운더로 실패로 인해 정적임 초기화하지 매우 흔하다.
  4. 이 때문에 이 같은 경우 종속성을 따라오렴 노클레스데파운더로 하위 자바드랑드링크지에로 또한 네이티브 라이브러리를 사용할 수 없을 수도 있습니다.
  5. 스타트업 스크립트는 재정의을 Classpath 환경 변수.
  6. Jar 명령을 사용하여 프로그램을 실행하기 될 수 있습니다 # 39 는 s 클래스, 속성 및 클래스용 file& 분명히 정의되어 있지.

자료:

3 해결 방안을 노클레스데파운더로

자바드란g.노클레스데파운더로 문제 패턴을

해설 (2)

나는 가끔 내가 받을 수 있다는 것을 코드는 컴파일할 때 오류가 노클레스데포드 호환되지 않는 버전이 클래스용 http://moss. dell. 런타임용으로 개발하십시오. 내가 있는 것은 특정 인스턴스입니다 재호출 apache axis 라이브러리란. 실제로 제 2 의 런타임용으로 개발하십시오 클래스 버전이 있었다, 자신도 picking up the 재생성합니다 및 호환되지 않는 버전 1 이 아니라, 작년 수정하십시오 노클레스데포드 오류:. 이 롬폭 명령줄입니다 앱 어디서 명령을 사용하여 이와 유사한 기능을 했다.

set classpath=%classpath%;axis.jar

내가 올바른 사용하여 버전을 데리러 이해했소 수 있었습니다.

set classpath=axis.jar;%classpath%;
해설 (2)

이것은 [최선의 해결책이] [1] 내가 지금까지 발견된.

예를 들어, 우리는 '오르조지미팩거 포함된 패키지' 라는 클래스:

  • HelloWorld (기본 클래스)
  • 주포트클레스
  • 우틸클레스

이 패키지로의 파일 및 디렉터리 아래의 '정의' (Windows 의 경우) 또는 '물리적으로 저장되는 D:\myprogram / home / 사용자 / 미프로그램' (Linux).

파일 구조는 다음과 같습니다. ! [입력하십시오. 이미지 여기에 설명을] [2]

자바 애플리케이션을 실행할 때, 우리는 우리가 호출하십시오 이름을 지정합니다. '오르조지미팩지지에로월드'. 하지만 떠날려하면 jave 대한 우리의 패키지 파일 및 디렉터리 정의점에 어디에서 찾을 수 있어야 합니다. 프로그램을 실행할 수 있도록, 우리는 다음 명령을 사용합니다. ! [입력하십시오. 이미지 여기에 설명을] [3]

[1]: # setting_the_path_to_execute_javaprograms https://en.wikipedia.org/wiki/classpath% 28Java% 29

해설 (0)

I was 를 사용하여 스프링 프레임워크메이븐 와 내 프로젝트 이 오류를 해결했다.

클래스에 런타임 오류가 있었다. 내가 어렸을 때 속성 속성 파일을 읽을 수 있지만, 같은 가치를 판독값 정수 값이 두 번 있었다.

스택 추적 결과를 밝히지 않고 있는 전체 봄 날 선 런타임용으로 개발하십시오 못했습니다. 단순히 '' 노클레스데파운더로 것 "이라고 말했다. 하지만 그 때 내가 실행됨을 자바 네이티브 응용 프로그램 (등의 아웃해야 MVC), it 제공했음 렉스티오니니니시알이제러로 '가' 내가 어떻게 통해 진정한 원인 및 원하는거요 오류:.

39 의 @xli& 파악할 수 있습니다 잘못된 답을 내게 준 것이 내 코드입니다.

해설 (1)

저도 노클레스푸네르로 class loader 에 의해 로드되었는지 런타임용으로 개발하십시오 클래스뿐만 때 이미 로드되었는지 jave 루트로이더 클래스뿐만 액세스할 수 없습니다. 이 때문에 서로 다른 클래스 로더, 서로 다른 보안 도메인과의 won& jvm (java) 에 따르면) 에 의해 해결될 수 있는 t # 39, 이미 로드되었는지 클래스뿐만 허용하시겠습니까 루트로이더 런타임용으로 개발하십시오 로더입니다 주소 공간.

& # 39 프로그램에 실행하십시오 & # 39 javaagent:tracer.jar [너회의 jave ARGS] 와 java -;;

Class loader 는 env 것을 보여주는 만여건이 출력입니다 로드됨 클래스 및 로드되었는지. # 39 의 아주 도움됐네 추적 왜 it& 클래스 해결될 수 없다.

// ClassLoaderTracer.java
// From: https://blogs.oracle.com/sundararajan/entry/tracing_class_loading_1_5

import java.lang.instrument.*;
import java.security.*;

// manifest.mf
// Premain-Class: ClassLoadTracer

// jar -cvfm tracer.jar manifest.mf ClassLoaderTracer.class

// java -javaagent:tracer.jar  [...]

public class ClassLoadTracer 
{
    public static void premain(String agentArgs, Instrumentation inst) 
    {
        final java.io.PrintStream out = System.out;
        inst.addTransformer(new ClassFileTransformer() {
            public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {

                String pd = (null == protectionDomain) ? "null" : protectionDomain.getCodeSource().toString();
                out.println(className + " loaded by " + loader + " at " + new java.util.Date() + " in " + pd);

                // dump stack trace of the thread loading class 
                Thread.dumpStack();

                // we just want the original .class bytes to be loaded!
                // we are not instrumenting it...
                return null;
            }
        });
    }
}
해설 (1)

흥미로운 사례는 많이 볼 수 있는 '' 노클레스데포네로스 경우입니다.

  1. '투사' a '정적' 블록 '예' 해당 클래스의 런타임렉세페시옹 '를'
  2. 인터셉트 it (아니면 그냥 doesn& 정보기술 (it) 등 문제가 발생하며, t # 39 에서 테스트 케이스 )
  3. 이 클래스의 인스턴스를 만들 시도하시겠습니까 '예'

&lt /br>;

static class Example {
    static {
        thisThrowsRuntimeException();
    }
}

static class OuterClazz {

    OuterClazz() {
        try {
            new Example();
        } catch (Throwable ignored) { //simulating catching RuntimeException from static block
            // DO NOT DO THIS IN PRODUCTION CODE, THIS IS JUST AN EXAMPLE in StackOverflow
        }

        new Example(); //this throws NoClassDefFoundError
    }
}

'함께' 블록 '정적' 에서 '을 던져 노클레스데퍼러 렉스티오니니니시알이제러로 런타임렉세페시옹'.

이는 특히 중요한 때 로켈이 '' 내 유닛 테스트 노클레스데포네로스 볼 수 있습니다.

39, re &quot you& 방식으로 sharing"; 하지만 이 '정적' 블록 '실행' 을 한 실험 간의 초기 렉스티오니니니시알이제러로 그냥 테스트 케이스. 첫 번째 문제가 된 '예' 사용하는 구분된다. 테스트 케이스 '예' 그냥 '우' 를 사용하는 다른 클래스에 노클레스데포네로스.

해설 (1)

Emf (등) 의 경우 생성된 코드 정적임 니시알이어스 스택할 모두 사용될 수 있는 공간이 너무 많이 있을 수 있습니다.

      • Https://stackoverflow.com/questions/3700459/how-to-increase-the-java-stack-size 오버플로입니다 질문 stack&amp 지켜보리니 nbsp;;
해설 (2)

다음 날, 이 기술을 통해 여러 차례.

System.out.println(TheNoDefFoundClass.class.getProtectionDomain().getCodeSource().getLocation());

여기서 테노더포드클레스 는 있을 수 있는 클래스 &quot lost"; 이전 버전의 같은 라이브러리를 사용하는 프로그램에 대한 선호도가 인해. 이 경우 자주 발생하는 차지하고 있는 클라이언트 소프트웨어는 로 배포되는 버전 및 세제곱밀리미터 무장한 고대 인기 클라슬로더스 컨테이너인 자체 라이브러리.

해설 (0)
    • 초기화 할 때 발생할 수 있습니다 '정적' 노클레스데파운더로 로드하기에 리소스에는 사용할 수 없는 번들화 런타임용으로 개발하십시오 예를 들어 있는 클래스 속성 파일 '에서' 가 있지만, 영향을 받는 로드하기에 META-INF 디렉터리 있지 않나. If you don '잘' see the full stack trace, 때로는 노클레스데파운더로 수 없게 됩니다. 이를 극복하기 위해 일시적으로 사용할 수 있습니다 '잘' 조항 "에 대한 트로이블 ':
try {
    // Statement(s) that cause the affected class to be loaded
} catch (Throwable t) {
    Logger.getLogger("").info("Loading my class went wrong", t);
}
해설 (5)

내가 이 문제를 프레데스라이브라리스 비활성화하여 고정식입니다 내 모든 모듈:

dexOptions {
        preDexLibraries false
        ...
해설 (1)

내가 맡을게 때 오류가 나는 내 다른 프로젝트로 Maven 종속성을 추가 모듈에서는 문제가 최종적 해결 '을 통해' 내 program& # 39 의 추가 xss2m jvm option (it& # 39 의 1mb 기본적으로 jdk5.0 이후). # 39 의 프로그램 it& 불러오시길 스택할 충분하지 않은 것으로 풀이된다.

해설 (0)

여기에 오는 사람이 있으면 때문에 '자바드란g.노클레스데파운더로: 왜냐하면 내가 만든 '오류, 내 경우에는 org/apache/log4j/logger 전송되었기 qopenmp log4j 2 (근데 난 didn& t # 39, 함께 제공되는 모든 파일을 추가 정보기술 (it), 일부 사용한 라이브러리 의존성을 log4j 1. 이 해결책은 브리징할 1.x Log4j 추가합니다. jar 를 ',' 에는 log4j-1.2-api-&lt version&gt, .jar 있는 log4j 2. 자세한 정보 log4j 의 2 마이그레이션과.

해설 (0)

서로 다른 두 복제본입니다 체크아웃합니다 같은 프로젝트

제 경우에는 구별할 수 없는 문제가 Eclipse& # 39 의 서로 다른 두 개의 동일한 복제본입니다 프로젝트. 나는 한 트렁크에서 잠겨집니다 SVN (버전 제어), 다른 하나는 apc® 한 번에 한 분기로의. 내가 한 일을 복제본에 시험해 변화를 비호환성의 주니스 테스트 케이스를 추출하는 포함된 전용 내부 클래스용 to be a public class 를 자체 전송되었기 apc® 동안, 나는 다른 복제본에 열어보려면 프로젝트의 코드를 필요로 하는 다른 일부가 둘러보거라 일정 변경. 어떤 점에서 내부 불만을 품고 있는 클래스 '는' 노클레스데파운더로 뛰어오름 백업하도록 pbs. 없었다. 스택 추적 재생하느뇨 me to the 소스 파일을 두 번 클릭 잘못 프로젝트 복제본입니다.

트렁크 복제본이므로 닫기와 프로젝트 및 테스트 실행 사건으로 다시 한 번 attaboy rid 아니다.

해설 (0)

이 오류 때문에 발생할 수 있는 선택 해제됨 자바 버전 홍보하십시오.

저의 경우는 내가 구축하는 한편, 오픈 소스 프로젝트 전환을 통해 진행되고 있었습니다 오류를 해결하십시오, Java 에서 Java 8 9 를 사용하여 [스데크먼!] (http://sdkman.io/).

sdk list java
sdk install java 8u152-zulu
sdk use java 8u152-zulu

설치 후 클리닝하지 하면 아래와 같은.

    • 메이븐 사용할 때, 그것은 때때로 만족 할 수 있을 뿐 아니라, 보통 구축하십시오 도구에서는 도움됐네 - # 39, & # 39, install& 클리닝하지 a , 구축하십시오 테스트가 비활성화됨 .
mvn clean install -DskipTests

, 는 이제 모든 것을 컴파일되었습니다 박으래도 및 실행하십시오 테스트 및 설치할 수 있습니다.

mvn test
해설 (0)

내가 언제 오류가 나는 attaboy 노클레스데포드 didn& # 39 의 &quot 익스포트하여 클래스, t, 주문 및 Export&quot. 내 길을 탭의 jave 구축 프로젝트. 체크 표시를 한, 주문 및 Export&quot &quot 있는 합니다. # 39 의 모든 종속물과의 shift+tab project& 추가한 구축하십시오 경로. Https://stackoverflow.com/questions/8884818/eclipse-warning-xxxxxxxxxxx-jar-will-not-be-exported-or-published-runtime-clas. 참조

해설 (0)

Ide 에서 파일을 복사할 때문일 수도 있습니다 특정 코드를 실행할 수 있는 패키지 이름 및 운영까지도 시도하시려면 사용하는 것이 가능하다. 패키지 이름을 먼저 분리하십시오 코드에서 합니다. 이 같은 일이 다는일은.

해설 (0)

자바 클래스 A 에서 찾을 수 없습니다 런타임용으로 개발하십시오. Class A 롬폭 메이븐 프로젝트 내의 다른 아르트클리나 작업공간에서. 그래서 내 임포트된 아르트클리나 Eclipse 를 부활시켰다. 내 프로젝트 2 로 사용한 아르트클리나 상관 관계. 나는 이러한 수준들과 투영하려면 참조로는 변경일 라이브러리 참조 (&gt 구축하십시오 경로 -; 구축하십시오 구성하시겠습니까 경로).

문제가 gone away.

해설 (0)