안녕하세요. 내 코드에서 외부 Java 패키지를 사용하려고하는데 컴파일 할 때 사용한 클래스 경로가 동일하더라도 NoClassDefFoundError
을 계속 사용하고 있습니다.NoClassDefFoundError가 컴파일 및 런타임에 동일한 jar 파일을 지정할 때 throw됩니다.
나는 의심 할 여지없이 WTF에서 지금
/* WTF/WTF.java */
import foo.Bar;
class WTF
{
public static void main(String[] args)
{
Bar dontCare = new Bar();
}
}
/* WTF/foo/Bar.java */
package foo;
class Bar
{
public Bar() {}
}
(I는 약 6 시간까지이에서 봤는데) 내 일부에 바보 같은 실수가 될 것입니다 무엇을 베어 뼈 재생을 포함했다 디렉토리 나는 다음과 같은 실행에만 WTF/사용할 수 foo.jar에가 있도록
javac foo/Bar.java [ok] javac WTF.java [ok] java WTF [ok] jar cf foo.jar foo [ok]
나는 WTF/foo는 디렉토리를 제거합니다.
javac WTF.java -cp foo.jar [ok] java WTF -cp foo.jar [[email protected]#$!]
Exception in thread "main" java.lang.NoClassDefFoundError: foo/Bar at WTF.main(WTF.java:7) Caused by: java.lang.ClassNotFoundException: foo.Bar at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 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)
모든 단서는 크게 감사합니다!
이것이 컴파일 된 것인지 궁금합니다. – adarshr
내 실수 표시 줄은 테스트 파일에서 공개로 표시되었지만 목록을 작성할 때 빠졌습니다. 예 그렇습니다. 컴파일을 제외하고 – norlesh