2013-07-13 5 views
0

저는 Ubuntu 12.04를 사용하고 있으며 명령 줄에서 Java 프로그램을 실행하려고합니다.실행 파일을 실행할 때 java.lang.NoClassDefFoundError가 발생했습니다.

그것은 유명한 프로그래밍 면접 책에서 프로그램, 코딩 인터뷰를 크래킹, 디렉토리 및 자바 파일의 구조입니다

여기 https://github.com/gaylemcd/ctci/tree/master/java

에서 볼 수있다, 나는 Chapter 2/Question2_5/QuestionB.java를 실행, 그리고 있어요 CtCILibrary 디렉토리에 LinkedListNode.java 클래스를 사용하고, 또한 내가 컴파일 명령

을 사용하여 QuestionB.java을 Chapter 2/Question2_5 디렉토리로 가서, 컴파일 Chapter 2/Question2_5/PartialSum.java

필요

javac -cp .:../../CtCiLibrary/CtCILibrary/LinkedListNode.java ./PartialSum.java QuestionB.java 

(컴파일 명령을 알아 내기까지 시간이 걸렸습니다.) QuestionB.class 파일을 컴파일했습니다.

나는 java QuestionB를 실행하지만, 내가 구글에 고개를하지만, 그들 중 누구도 나를 위해 일하지 않을 때 많은 참조가 있었다
Exception in thread "main" java.lang.NoClassDefFoundError: QuestionB (wrong name: Question2_5/QuestionB) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
Could not find the main class: QuestionB. Program will exit. 

오류를 발생합니다.

누구나 이걸 어떻게 실행할 수 있습니까?

+0

NoClassDefFoundError는 클래스 경로가 손상되었음을 의미합니다. –

+0

그것이 내가 Google을 찾았을 때 읽은 것입니다. 내가 잘못하고있는 곳을 지정할 수 있다면 많은 도움이 될 것입니다. 커맨드 라인에서 자바를 처음 실행하는 것이므로 혼란 스럽습니다. (나는 커맨드 라인/vim에서만 C++을 사용했다.) 고맙습니다. – user2418202

+0

https://github.com/gaylemcd/ctci/tree/master/java/Chapter%202/Question2_5를보고 해당 디렉토리에서 QuestionB.java를 컴파일하고 실행하는 방법을 알려주시겠습니까? 최상위 디렉토리를 체크 아웃 했으므로 디렉토리 구조가 정확히 동일합니다 – user2418202

답변

0

java 명령을 실행하는 디렉토리를 말하지 않았습니다. 당신이 classpath를 지정하지 않았기 때문에 명령은 현재 디렉토리 (나는 믿는다)에서 찾을 것이고 환경에서 클래스 패스를 찾을 것이다. (다음은 현재 디렉토리에는 패키지 이름 경우)

희망이 도움을 제공하지 않습니다 파일 (들) 클래스 패스 자신의 패키지에 대한 적절한 디렉토리에

  • 볼 수

    • 있는지 확인 .

  • +0

    2 장/Question2_5 디렉토리에서 프로그램을 컴파일하고 실행했습니다. (위에 명시했습니다) – user2418202

    +0

    링크 된 목록 클래스가 클래스 패스에없는 것처럼 보입니다. questionb 클래스가 올바르게 작동해야합니다. – LhasaDad

    +0

    https://github.com/gaylemcd/ctci/tree/master/java/Chapter%202/Question2_5를보고 QuestionB.java를 컴파일하고 실행하는 방법을 알려주십시오. 그 디렉토리? 나는 최상위 디렉토리를 체크 아웃 했으므로 디렉토리 구조는 정확히 동일하다. – user2418202

    관련 문제