Search code examples
javaeclipseclassnotfoundexceptionrcp

Eclipse. ClassNotFoundException but I do know that class exists


I added myLibrary.jar in project BuildPath and try to call static method from myLibrary.jar myClass but have exception:

Caused by: java.lang.NoClassDefFoundError: application/Application
    at rcp.handlers.RunGenerationHandler.execute(RunGenerationHandler.java:29)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
    at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)
    ... 38 more
Caused by: java.lang.ClassNotFoundException: application.Application cannot be found by rcp_1.0.0.qualifier
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 46 more

I'm sure that class exists in Library. I try to rebuild myLibrary.jar and add in project again but problem still stays.
Below is the code where I try to call static method from my class:

import application.Application;
...

if (generationString != null){
    Application.main(generationString);
}

Application - class in myLibrary.jar

Screenshot with package tree

ldl = myLibrary

UPDATE
I'm really such a slowpoke=(
In RCP applications libraries attaching in MANIFEST.MF
Example:

Bundle-ClassPath: .,/directory/myLibrary.jar


Solution

  • If your Library is also a RCP-Plugin you have to add it in the dependencies of your plugin.xml in your project. In the Library plugin.xml you have to export the package where the class is in.