Just right before EclipseCon 2012 I’ve released e(fx)clipse 0.0.13. On the feature side the main focus was on runtime, on the tooling I fixed some bugs which hopefully improves your coding experience (especially with fxml-Files).
All in one downloads
To say the all in one-downloads are well received is an understatement – they are a huge success. The 0.0.12 release has been downloaded 1385 time (windows 1200, linux 110, mac 75) – that linux outperforms OS-X is interesting.
This release provides you the following updates:
- Updated to Eclipse 3.7.2 and 4.2-M6
- Update to egit 1.3.0
- Update to Xtext 2.3.0-M6: I thought long about this update but finally decided its worth it because while we are entering the final release phase for Juno and the fxgraph stuff uses experimental xtext features this step had to be made
Runtime
Deployment/Provisioning
I’ve already teasered this new feature in a blog post. When writing and provisioning equinox based JavaFX applications you can now select a deployment model that suites you best:
- System installation: This deployment model requires your users to have JavaFX pre-installed on their system
- Next to your app installation: This deployment model requires you to place javafx next to your RCP/IDEs launcher – similar to how you can deploy a JRE with your Eclipse Application
- As a bundle installation: Here you place your javafx.jar into an OSGi-Bundle and the e(fx)clipse runtime will take care of extracting and wireing – see the tooling section on how e(fx)clipse helps you create such a bundle
e4 renderers
I’ve invested a lot of time into so called JavaFX-Renderes for the Eclipse 4 Application Platform.
The application in the back is rendered using only JavaFX. The one in the front is using SWT as the rendering technology for the workbench stuff (Tab, Menus, …) and JavaFX for the parts contents (like the list on the left, …) – in fact the classes making up the inner parts are 100% the same for the JavaFX and SWT-Version of the application
Even the Application.e4xmi is the same the only difference is that once the applications starts with the JavaFX-RenderingEngine and once with the SWT one – cool eh 🙂
JavaFX in 3.x Views
For those who simply want to use JavaFX to implement a view for the Eclipse IDE (3.x and 4.x) there’s a new feature which provides you an easy integration. The feature only holds one class named “FXViewPart”.
Tooling
Exporting
I received some mails from Matthias Pieroth – creator of PFRotator.FX which allowed me to track down problems in this area.
The exporting of JavaFX-Projects using the ant-tasks provided by JavaFX has been improved. Siging now works as expected and the Webstart export is now useable
Support for javafx-osgi bundle
e(fx)clipse will not provide you pre-packaged JavaFX-OSGi bundles because of various reasons (the most important one is that while 2.1 builds are published weekly this doesn’t make a whole lot of sense) but the tooling provides which allows to assemble such a bundle very easily.
Preview
The preview provides you the possibility to scale the previewed content which comes in handy if your UI is to big to be displayed without scrolling.
Like the screenshot depicts it looks like the latest Preview builds for JavaFX have fixed SWT/JavaFX-Embeding problems and so I’ve removed the alpha label from the linux builds.
Bugfixes
A list of bug fixes can be retrieved from our ticket system. I hope they help you get a better developer experience.
EclipseCon
I’m heading to EclipseCon 2012 tomorrow where I’ll take part in various sessions and in all of them e(fx)clipse will play a role:
- Tuesday:The Eclipse 4 Application Platform explained – This talk will explain the Eclipse 4 Application Platform which can be used to write JavaFX application using OSGi, Dependency Injection and central application model
- Wednesday:e(fx)clipse – Eclipse Tooling and Runtime for JavaFX – will provide you an overview of the e(fx)clipse features for tooling and runtime
- Thursday:Eclipse 4 Meets CDO: Now You See It, and So Do They! – this one will be really cool. We show you how the JavaFX version of the above application and the SWT one can communicate using CDO – opening and zooming an image on the one will be reflected automagically by the other
- Hot Product Show Case – I’ll be presenting e(fx)clipse at this event to interested people
- Kai Tödter and myself think about setting up a BoF to discuss the future of JavaFX for the Eclipse 4 Application Platform
The link given here does not work. Eclipse says that there is no software at this location. Please help
“There’s currently no stable URL provided for the e4 repo but you can find the one from latest 0.12 M-build at http://download.eclipse.org/e4/downloads/.”
If you follow the link in your browser you should see a html-page which points to the repo which is located at http://download.eclipse.org/e4/downloads/drops/S-0.12M6-201203151300/repository
You can get further support on the google group: https://groups.google.com/forum/?fromgroups#!forum/efxclipse
Hello
I have the following message when upgrading to efxclipse 0.0.13 from efxclipse 0.0.12 on Eclipse 3.7.2 linux version:
Cannot complete the install because one or more required items could not be found.
Software being installed: Main Feature 0.0.13.201203211852 (at.bestsolution.efxclipse.feature.feature.group 0.0.13.201203211852)
Missing requirement: Svg Model 0.0.13.201203211852 (at.bestsolution.efxclipse.formats.svg 0.0.13.201203211852) requires ‘bundle org.eclipse.xtext.xbase.lib 2.3.0’ but it could not be found
Cannot satisfy dependency:
From: Main Feature 0.0.13.201203211852 (at.bestsolution.efxclipse.feature.feature.group 0.0.13.201203211852)
To: at.bestsolution.efxclipse.tooling.feature.feature.group [0.0.13.201203211852]
Cannot satisfy dependency:
From: Converter 0.0.13.201203211852 (at.bestsolution.efxclipse.tooling.converter 0.0.13.201203211852)
To: bundle at.bestsolution.efxclipse.formats.svg 0.0.13
Cannot satisfy dependency:
From: FX Tooling 0.0.13.201203211852 (at.bestsolution.efxclipse.tooling.feature.feature.group 0.0.13.201203211852)
To: at.bestsolution.efxclipse.tooling.converter [0.0.13.201203211852]
I suspect it is due to xtext 2.3.0 installation. Perhaps it could be solved by including an updatesite for the new xtext 2.3.0 version, as I am using the traditional updatesite:
http://download.eclipse.org/modeling/tmf/xtext/updates/composite/latest/
Any help is wellcome 🙂
Regards
Yes Xtext 2.3.0 is a prereq for the repo is at: http://download.eclipse.org/modeling/tmf/xtext/updates/composite/latest/ looks like I forgot to update the 4.2 install page
We also provide support for problems at the Google Group: https://groups.google.com/forum/?fromgroups#!forum/efxclipse
Pingback: Java desktop links of the week, March 26 | Jonathan Giles
Pingback: JavaFX News, Demos and Insight // FX Experience
I have installed Eclipse 3.7 (lazy) including all the plugin support necessary to run JavaFX apps as OSGi plugins. Unfortunately when I export JavaFX runtine libs from a plugin and try to run another plugin using JavaFX libraries (making scenes and adding some nodes into it) an exception is thrown..
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.7.2.v20120110-1415
12 ACTIVE JFXLib_1.0.0
13 RESOLVED PluginUsingJFX_1.0.0.qualifier
osgi> start 13
Application started
org.osgi.framework.BundleException: Exception in pluginusingjfx.Activator.start() of bundle PluginUsingJFX.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:291)
at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:333)
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.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Not on FX application thread; currentThread = OSGi Console
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
at javafx.stage.Stage.(Unknown Source)
at javafx.stage.Stage.(Unknown Source)
at pluginusingjfx.MyApplication.start(MyApplication.java:17)
at pluginusingjfx.Activator.start(Activator.java:23)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
… 14 more
Nested Exception:
java.lang.IllegalStateException: Not on FX application thread; currentThread = OSGi Console
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
at javafx.stage.Stage.(Unknown Source)
at javafx.stage.Stage.(Unknown Source)
at pluginusingjfx.MyApplication.start(MyApplication.java:17)
at pluginusingjfx.Activator.start(Activator.java:23)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:291)
at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:333)
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.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
at java.lang.Thread.run(Unknown Source)
Nested Exception:
java.lang.IllegalStateException: Not on FX application thread; currentThread = OSGi Console
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
at javafx.stage.Stage.(Unknown Source)
at javafx.stage.Stage.(Unknown Source)
at pluginusingjfx.MyApplication.start(MyApplication.java:17)
at pluginusingjfx.Activator.start(Activator.java:23)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:291)
at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:333)
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.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
at java.lang.Thread.run(Unknown Source)
I have tried many techniques to resolve this but I am unable to. Please help.
Thanks
You supposed to start the whole thing using the IApplication (e.g. by subclassing AbstractJFXApplication). Did you look at my example apps? What platform are you on? Is it OS-X?
Sir,
I am using Windows XP. What I am trying to do is very simple. I just want to run JavaFX with Equinox. And for that I am using Eclipse as an IDE and its framework for OSGi.
I am unable to understand how things should be…
Did you take a look at the example OSGi-Apps in the git-repo? As I said you’ll have to create and equinox application
I tried to. Let me work it out again.
I’m currently at EclipseCon and afterwards on holiday for a week or so but once I’m back home I plan to write a step by step tutorial on how to create an OSGi-Application useing the runtime stuff of e(fx)clipse.
Please. That would really help. Thanks
Hello,
I just gave the new 0.0.13 release a look, because I wanted to use JavaFX in some RCP views. But when I try to repackage JavaFX for OSGi (via the new project template provided by e(fx)clipse), nothing happens when I click on the “finish” button. In the wizard I used the same settings as above (Bundle-Version=2.1.0, Bundle-Shape=dir) and I set the JavaFX Zip files for all 4 platforms. When I click on finish, the directory for the project gets created in the workspace, but it is empty and nothing further happens. The eclipse error log shows, that an exception in the wizard has occured. I used a nearly clean Eclipse for RCP and RAP Developers 3.7.2 Installation (only Subversive and its SVN connectors where installed). Is the problem on my side and solvable or is it a bug?
Here is the exception message:
java.lang.NoSuchMethodError: org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectToPluginOperation.([Lorg/eclipse/core/resources/IProject;Z)V
at at.bestsolution.efxclipse.tooling.pde.ui.RepackageJavaFXWizard.performFinish(RepackageJavaFXWizard.java:85)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:827)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:432)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.ui.actions.NewProjectAction.run(NewProjectAction.java:117)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
And last but not least: Thanks for you work, I really appreciate it!
This looks like a bug in the 3.7 version you can download the 4.2 version until i fix this for the next release.
Hello,
I just found your e(fx)clipse project and I just tested the 0.0.13 release, because I wanted to try JavaFX in some RCP views. I used the “cowards” method to install e(fx)clipse (in an Eclipse for RCP developers version 3.7.2), which seemed to work without any problems.
But when I tried to add JavaFX support to my RCP app, I understand that I have to repackage the JavaFX libraries in an OSGi compatible form via the wizard, that is provided by e(fx)clipse. I used the wizard exactly as shown above in your posting, but when I click on finish, the repackaging does not start. only an empty project folder ist created, nothing else happens. In the eclipse error log I found, that an exception has occured in the wizard in the performFinish() method.
Have I done something wrong or did I miss something? Or is it a bug in the Wizard?
The exception message and stacktrace is as follows:
================================ START ===========================
java.lang.NoSuchMethodError: org/eclipse/pde/internal/ui/wizards/tools/ConvertProjectToPluginOperation.([Lorg/eclipse/core/resources/IProject;Z)V
at at.bestsolution.efxclipse.tooling.pde.ui.RepackageJavaFXWizard.performFinish(RepackageJavaFXWizard.java:85)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:827)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:432)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.ui.actions.NewProjectAction.run(NewProjectAction.java:117)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
eclipse.buildId=M20120208-0800
java.version=1.6.0_29
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.epp.package.rcp.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.rcp.product
================================ END ===========================
And last but not least: Thanks for your work, It really is great to see that its possible to use JavaFX with Eclipse RCP apps.
Pingback: e(fx)clipse 0.0.14 released | Tomsondev Blog