본문 바로가기

일하는 곳에선

java.lang.ClassNotFoundException: org.eclipse.core.runtime.Assert

이클립스 SWT 연습중에 AutoResizeTableLayout 클래스를 이용해 레이아웃 연습중에 다음과 같은 에러가 발생한다.

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/Assert
 at org.eclipse.jface.viewers.ColumnPixelData.<init>(ColumnPixelData.java:78)
 at org.eclipse.jface.viewers.ColumnPixelData.<init>(ColumnPixelData.java:48)
 at MyLayout.main(MyLayout.java:56)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.Assert
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
 ... 3 more


JFace, SWT, 그리고 위에 나오는 runtime 라이브러리를 추가해도 같은 오류가 발생됐다.

문제 해결책은 다음 라이브러리를 추가해 주면 사라진다.

org.eclipse.equinox.common_xx.jar

해당 라이브러리가 알게 모르게 내부적으로 참조하고 있었나 보다. 하지만 에러 표시가 없으니 해당 라이브러리가 필요한지 알기가 하늘에 별따기다. SWT 라이브러리 추가해서 연습하다 보면 비슷한 에러 발생시에도 해당되니 참고하자.