Eclipse 를 이용하여 java 개발을 하다가, 명령 프롬프트 창에서 compile 하고 run 할때
D:\eclipse-data\mytest\src\test1>javac Test2.java
D:\eclipse-data\mytest\src\test1>java Test2
Exception in thread "main" java.lang.NoClassDefFoundError: Test2 (wrong name: test1/Test2)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
실행시 이런 걸 당해본 경험이 있다면........... package 를 사용했기 땜에 이렇다
이럴 땐
D:\eclipse-data\mytest\src\test1>java -cp D:\eclipse-data\mytest\src test1.Test2
f1[0]=0.0 f2[0]=0.0 // 정상 결과
i) 이렇게 classpath 를 상위 폴더까지 잡아주고
ii) [package name].[class name] 이렇게 하면 된다
근데 이렇게 일일이 classspath 를 잡아주기엔 넘넘 귀찮다
환경변수에 CLASSPATH 값에 상위폴더를 의미하는 '..' 이걸 추가시켜준다
(내 컴퓨터 >> 속성 >> 고급)
자 이제 명령 프롬프트 창을 다시 열어서 확인해보고
D:\>set CLASSPATH
CLASSPATH=.;..; /*기타등등*/
classpath 등록만 하면 package.class_name 이렇게만 하면 된다
D:\eclipse-data\mytest\src\test1>java test1.Test2
f1[0]=0.0 f2[0]=0.0 //정상 결과
기타 상세한 다른 내용은 아래 사이트를 들어가보면 된다
'프로그래밍 > JAVA 프로그래밍 초급' 카테고리의 다른 글
[자바 네트워크][newtwork] 기본 코드들 (0) | 2014.07.08 |
---|---|
[자바][네트워크]java.net.*; 패키지의 InetAddress.getAllByName() 사용 (0) | 2014.07.03 |
[JAVA] TCP소켓 프로그래밍의 이해 및 채팅프로그램 예제 (0) | 2014.07.01 |
[자바][이클립스] 파일 리스트 콘솔창으로 조회하기 (0) | 2014.06.27 |
[자바] 한글 인코딩 파일 입출력 처리 (0) | 2014.06.25 |