728x90

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 //정상 결과

 

기타 상세한 다른 내용은 아래 사이트를 들어가보면 된다

 

참고 : http://www.jarticles.com/package/package_eng.html

Posted by 앗뜨거
,