Community
Participate
Working Groups
A Kepler M6 AUT containing the RCP accessor throws the following exception: Unable to create class 'org.eclipse.jubula.rc.rcp.e4.swt.starter.SwtProcessor': org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: org/eclipse/e4/ui/model/application/ui/MUIElement Caused by: java.lang.NoClassDefFoundError: org/eclipse/e4/ui/model/application/ui/MUIElement at org.eclipse.jubula.rc.rcp.e4.swt.starter.SwtProcessor.<init>(SwtProcessor.java:27) This is caused by a change in the internal API from Juno to Kepler. We are using this internal API (org.eclipse.e4.ui.model.application.ui) for component naming in e4 (E4SwtComponentNamer).
Created attachment 229526 [details] E4 Jar Patches for Jubula RCP Aut Attempt to use a fragment patch had issues with DI using the old code, so I did a complete rewrite of these two plugins (very easy) and replaced them in their respective bundle locations.
Created attachment 229527 [details] 2nd Patch file Swt implementation component of the patch
Notes on my attachments: These are simple builds using the export feature from Eclipse so they are not complete rebuilds of the code from Jubula. Initial attempt to use Fragments to fix the issue was foiled by a Dependency Injection issue that made it, in my quick scan, unreliable. In any case, I'm able to find components in my RCP app in 4.3M6.
Created attachment 229542 [details] Source bundles for the previously attached jar files The version number on the source bundles differ from the previous bundles because of the time they were generated. Final note: I exploded the jar into a directory in my AUT's plugin directory, replaced the two jar files in their respective bundle directories, and started the AUT up.
Thanks for your work, notes and patches on this Jon. We'll be looking at this in the next few weeks so that it works for Kepler.
You are welcome. I did not test the code in a 4.2 environment, but I'm pretty sure it would be broken there. So I would imagine to keep your all-in-one system going there is some heavy-lifting to be done with the build side. But I really wanted to get my application(s) covered with some good UI and Use testing and I feel Jubula is the way to go.
@Triaged:+ Raimar is currently looking into the submitted patch.
I have looked into the patch submitted from Jon and saw, that he uses the same internal package in Kepler. This internal package has moved from the bundle org.eclipse.e4.ui.workbench (Juno) to org.eclispe.e4.ui.model.workbench (Kepler). After adding the bundle specific to Kepler as an optional bundle, I was able to map objects successfully in a Kepler AUT. http://git.eclipse.org/c/jubula/org.eclipse.jubula.core.git/commit/?id=66d939eefe98a118a3ac8dc27c054bbab5437ff3
I did one other thing: I removed the test and cast to HandledToolItemImpl as I thought the MToolItem method getElementId() was sufficient. If it is, I think this should take the naming class outside of the impl scope.
Thanks Jon for your hint in comment 9. I have modified the class E4SwtComponentNamer, so that the internal class HandledToolItemImpl is not used anymore. Instead the toolbar and the toolbar items are detected by using the getWidget() method and comparing with the corresponding SWT types. Your hint has been integrated in the fix for BUG 405872.
The described behavior in the original post does not occur anymore (tested using current GD/JB and Kepler M6 Eclipse Classic/SDK Build id: 20130320-2352 as AUT.
Created attachment 231166 [details] Script to create an updated rcp-support zip file
Created attachment 231167 [details] The updated rcp-support zip file containing Job Boley's two updated jar files
A few miscellaneous comments: 1. The 2nd Patch file is actually a jar file, but it is attached as text/plain so when you download it you should do whatever is necessary to name it with a .jar file extension. 2. I am attaching a very simple script named update-rcp-support-zip I used to create an updated rcp-support-201304091027.zip file. 3. I am attaching the updated rcp-support-201304091027.zip file containing Jon Boley's two jar files in their appropriate bundle directories.