2010-02-08 5 views
-1

OS X에서 TextMate를 사용하여 Java 프로그램을 한 번 실행 했으므로 더 이상 Java를 사용할 수 없습니다. 간단한 프로그램에
, 내가 얻을 :Textmate에서 Java가 손상 되었습니까? thread "main"의 예외 java.lang.NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: Gateway (wrong name: org/mcgill/telecom/Gateway)

내가 javac -classpath . Gateway.java, java -classpath . Gateway 또는 이클립스 또는 넷빈즈 사용 여부.

정확히 동일한 프로그램을 cmd-R을 사용하여 TextMate에서 실행할 수 있지만 그 밖의 다른 곳은 없습니다.
Java에 어떤 현상이 발생 했습니까?

답변

6

나는 텍스트 편집기가 그렇게했는지 의심 스럽다.

어쨌든 java -classpath . Gateway은 해당 클래스가 패키지 org.mcgill.telecom (폴더 구조가 나타내는)에있는 경우 작동하지 않습니다.

org 폴더가 보이는 폴더 대신 java -classpath . org.mcgill.telecom.Gateway을 시도하십시오.

테스트를 위해 수행 할 수있는 작업은 다음과 같습니다.

  • temp 폴더로 이동하여이 폴더 구조를 만듭니다. org/mcgill/telecom;
  • 폴더에 Gateway.java이라는 파일을 만듭니다.
  • 아래 내용을 Gateway.java 파일에 복사하십시오.
  • 명령 프롬프트를 열고 temp 폴더로 이동하십시오. 여기

    [email protected]:~$ cd Temp/ 
    [email protected]:~/Temp$ ls 
    org 
    [email protected]:~/Temp$ javac org/mcgill/telecom/Gateway.java 
    [email protected]:~/Temp$ java -classpath . org.mcgill.telecom.Gateway 
    Oi, it works! 
    [email protected]:~/Temp$ 
    

    게이트웨이 클래스 :

    package org.mcgill.telecom; 
    
    public class Gateway { 
        public static void main(String[] args) { 
        System.out.println("Oi, it works!"); 
        } 
    } 
    
  • javac org/mcgill/telecom/Gateway.java
  • 이 내가 무엇을 얻을 java -classpath . org.mcgill.telecom.Gateway

실행 실행

관련 문제