0

We are running automated tests using WindowsTester. When I run one of my test cases, I'm getting "java.lang.NoClassDefFoundError" error. Please, help me to resolve this.

The stacktrace is:

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
hamena314
  • 2,969
  • 5
  • 30
  • 57
Paul-E
  • 91
  • 12
  • This exception comes when your code had access to `ModuleClassLoader.class` file at compile time but is not able to locate it at runtime. Make sure its in classpath. – justAbit May 14 '15 at 13:09
  • Check classpath to add all OSGI plugin dependencies jar in eclipse – user1933888 May 14 '15 at 13:14

1 Answers1

1

The windowtester classes are being loaded by the ClassLoader for your test bundle. They are then trying to load the ModuleClassLoader class using that same ClassLoader.

In order for the class to be available to your bundles ClassLoader you need to have a dependency from your test bundle to the org.eclipse.osgi bundle. Declare this in the plugin.xml of your test bundle.

Nick Wilson
  • 4,959
  • 29
  • 42