java.lang.NoClassDefFoundError on OSGi
Solution 1
Make sure you import the javax.swing
package into your bundle:
Import-Package: javax.swing
Solution 2
Use this VM argument:
-Djava.specification.version=1.6
This will force Felix to make available the default set of system packages for Java 6, which includes javax.swing
and its sub-packages
Solution 3
Now it works! I configured boot delegation in config file!
I put org.osgi.framework.bootdelegation= in config.ini.
Both of you should told me this before guys hehe. Now I read in equinox wiki, that following the OSGi specification I need to define every package I need to use, and I think its right, because some customized VMs can have more libs than other.
But Eclipse don't works in this concept of importing every java package (like javax.swing). I'll report this in Eclipse Bugzilla.
Many thanks both you!
PS: What are your book @Neil?
John John Pichler
More than 15 years of software development and still having fun and learning every day like I was just started :)
Updated on June 22, 2022Comments
-
John John Pichler almost 2 years
I have a bundle, with an activator declared. This activator create a JFrame and show it.
Running on Eclipse as Plugin project it works fine. When I put on Felix it doesn't work anymore. It shows: java.lang.NoClassDefFoundError: com/griep/ui/MainFrame
But MainFrame is located in the same bundle the activator is, as a public class, of course. I don't understand why the classloader isn't finding the class.
Anyone knows what is happening?