如何解决这个java.lang.NoClassDefFoundError

时间:2015-05-14 13:02:51

标签: java eclipse-plugin

我们正在使用WindowsTester运行自动化测试。当我运行我的一个测试用例时,我得到" java.lang.NoClassDefFoundError"错误。 请帮我解决这个问题。

堆栈跟踪是:

java.lang.NoClassDefFoundError: org/eclipse/osgi/internal/loader/ModuleClassLoader
    at com.windowtester.internal.runtime.bundle.BundleResolver.bundleForClass(BundleResolver.java:21)
    at com.windowtester.internal.runtime.bundle.BundleResolver.bundleNameForClass(BundleResolver.java:29)
    at com.windowtester.internal.runtime.bundle.BundleClassReference.forBundleClass(BundleClassReference.java:35)
    at com.windowtester.internal.runtime.ClassReference.forBundleClass(ClassReference.java:26)
    at com.windowtester.runtime.WidgetLocator.<init>(WidgetLocator.java:88)
    at com.windowtester.runtime.WidgetLocator.<init>(WidgetLocator.java:108)
    at com.windowtester.runtime.WidgetLocator.<init>(WidgetLocator.java:134)
    at com.windowtester.runtime.swt.locator.SWTWidgetLocator.<init>(SWTWidgetLocator.java:139)
    at com.windowtester.runtime.swt.locator.CTabItemLocator.<init>(CTabItemLocator.java:127)
    at com.sample.TestUtilsGUI.closeWelcomePageIfNecessary(TestUtilsGUI.java:216)
    at junit.framework.TestCase.runBare(TestCase.java:139)
    at com.windowtester.runtime.common.UITestCaseCommon.access$0(UITestCaseCommon.java:1)
    at com.windowtester.runtime.common.UITestCaseCommon$2.run(UITestCaseCommon.java:140)
    at com.windowtester.runtime.common.UITestCaseCommon$3.run(UITestCaseCommon.java:161)
    at com.windowtester.internal.runtime.junit.core.SequenceRunner$1.run(SequenceRunner.java:50)
Caused by: java.lang.ClassNotFoundException: org.eclipse.osgi.internal.loader.ModuleClassLoader cannot be found by com.windowtester.runtime_6.1.0.201310072244
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 17 more

1 个答案:

答案 0 :(得分:1)

测试包的ClassLoader正在加载windowtester类。然后他们尝试使用相同的ClassLoader加载ModuleClassLoader类。

为了让您的bundle ClassLoader可以使用该类,您需要具有从测试包到org.eclipse.osgi包的依赖关系。在测试包的plugin.xml中声明这一点。