Hello,
I'm trying to create an Eclipse plugin; a regular view that would show some graphical elements using JavaFX. I am using JavaFX 2, Eclipse 3.6 and Java 1.6.
1. All I did is that I created the most simple view from the Eclipse example projects.
2. Then I created a new plugin
JavaFX.lib using the "Plug-in from Existing JAR Archives". It contains the
deploy.jar, javaws.jar, jfxrt.jar, plugin.jar JAR files.
3. I modified the
SampleViev.createPartControl(Composite parent) method to look like this:
public void createPartControl(Composite parent) {
Composite composite = new Composite(parent, SWT.EMBEDDED);
FXCanvas fxPanel = new FXCanvas(composite.getShell(), SWT.NONE); //<====== EXCEPTION
Group group = new Group();
Scene scene = new Scene(group);
Button button = new Button("JFX Button");
group.getChildren().add(button);
fxPanel.setScene(scene);
}
But now I'm getting an exception
java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Canvas
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at graphicalview2.views.SampleView.createPartControl(SampleView.java:101)
Could you please advise how to solve this problem?
Also am I going the right way? Is this the proper way to have JavaFX in eclipse views and editors?
BTW I also tried to add the four JAR files mentioned above to the
Classpath on the
Runtime tab of the
plugin.xml, but then I got the following exception. Could you please explain what is the reason for getting this exception?
java.lang.UnsatisfiedLinkError: Invalid URL for class: bundleresource://497.fwk6586390:2/com/sun/glass/utils/NativeLibLoader.class
at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(Unknown Source)
at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(Unknown Source)
at com.sun.glass.utils.NativeLibLoader.loadLibrary(Unknown Source)
at com.sun.glass.ui.Application$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.glass.ui.Application.loadNativeLibrary(Unknown Source)
at com.sun.glass.ui.win.WinApplication.<clinit>(Unknown Source)
at com.sun.glass.ui.win.WinPlatformFactory.createApplication(Unknown Source)
at com.sun.glass.ui.win.WinPlatformFactory.createApplication(Unknown Source)
at com.sun.glass.ui.Application.Run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.startup(Unknown Source)
at com.sun.javafx.application.PlatformImpl.startup(Unknown Source)
at javafx.embed.swt.FXCanvas.initFx(Unknown Source)
at javafx.embed.swt.FXCanvas.<init>(Unknown Source)
at graphicalview2.views.SampleView.createPartControl(SampleView.java:101)
Thanks,
Attila