- This topic has 13 replies, 3 voices, and was last updated 20 years, 6 months ago by Scott Anderson.
-
AuthorPosts
-
Samer KanjoParticipantI was wondering why the GEF plug-in is installed as part of MyEclipse but the features for GEF are not installed?
Scott AndersonParticipantWe wrapped the GEF plugin into one of our features. Features are just a packaging mechanism and rather than add a new feature with one plugin in it it was easier to integrate into our build process by rolling it into an existing feature. GEF is still in there and active though.
Samer KanjoParticipantUnderstood, however based on my thread about JasperAssistant, it does not seem to be a good idea to make GEF a local plug-in within a MyEclipse feature since there are other plug-ins that require it. Perhaps it could be installed as a global plug-in that is required by a MyEclipse feature. However, this may introduce some installation problems if you need to check for a previous installs of GEF.
Is there a compatibility problem having a plug-in installed as a local plug-in and as a global plug-in?
Scott AndersonParticipantit does not seem to be a good idea to make GEF a local plug-in within a MyEclipse feature since there are other plug-ins that require it. Perhaps it could be installed as a global plug-in that is required by a MyEclipse feature.
Can you please define the terms ‘local plug-in’ and ‘global plug-in’ and define the difference? I don’t believe Eclipse makes any such distinction, IIRC.
Samer KanjoParticipantBy global plugin I am referring to those plugins that are imported in the requires section of a features.xml file and which are installed as a feature themselves.
By local plugin I am referring to those plugins identified in the plugin statements within the feature.xml file.
My experience with JasperAssistant seems to indicate that a plugin installed locally is not visible to other plugins while a plugin installed globally can be imported into any feature.
I don’t yet understand the workings of plugins and features. I am basing my assumptions on observed behavior. While there may be no definition of local and global plugins specifically, the concept may exist in some form or another.
Scott AndersonParticipantLet me try to clear things up a bit.
Plug-ins listed in the ‘requires’ section of the feature.xml file tell Eclipse that the feature cannot be installed successfully if those plug-ins are not present. Eclipse won’t install the feature if it can’t find all these prerequisites. The individual ‘plugin’ entries in the feature.xml file is the list of plug-ins that are packaged as part of the feature itself and will be installed as part of the feature. There really isn’t a concept of ‘global’ and ‘local’ plug-ins, it’s more like ‘required’ plug-ins and ‘provided’ plug-ins.
The problem you saw with JasperAssistant is simply that the GEF team packaged all their milestone versions as 3.0.0, as is Eclipse’s standard practice. However, we included a different milestone version of GEF 3.0 than JasperAssistant needed, thus causing a problem. However, now that GEF 3.0 is ‘final’, both MyEclipse and JasperAssistant will be packaging the same release of GEF 3.0. When Eclipse starts up, it will see that it’s got two contributed versions of the same plugin and will simply choose one of them to start up while writing an informational message in the log file.
Seem clearer now?
Samer KanjoParticipantYour first paragraph verifies my thoughts on required plugins and provided plugins (although I was calling them global and local it seems to be the same concept). However, your second paragraph seems irrelevant to my problem. Let me go over my situation for clarity to show that I don’t believe the GEF library version is the problem.
Install steps:
1. Installed Eclipse 3.0, started, and shutdown.
2. Installed MyEclipse 3.8 Beta 1, started, verified installed, and shutdown.
3. Installed JasperAssistant 1.2.3 started, verified installed, and shutdown.
4. Reboot machine and started Eclipse.After the install was complete I tried to use JasperAssistant to create a report when I encountered an error that seemed to point to GEF not being available to JasperAssistant.
I knew that MyEclipse included GEF as part of its distribution so I thought this was strange. I checked the plugin details in Eclipse and checked the MyEclipse install folder to verify that the files were indeed there and recognized.
Next step was to check with the JasperAssistant support site and saw others having similiar problems. Those problems were solved by having the users download and install GEF (These people were not using MyEclipse, how sad). For those people, the problem was solved.
I downloaded GEF 3.0 from the Eclipse site and did a visual check of the distribution I downloaded against the distribution included with MyEclipse and found them to be identical except that MyEclipse does not include the feature folder for GEF (Because it’s a plugin provided with a MyEclipse feature).
My first attempt to fix the problem was to extract the feature folder from the GEF distribution I downloaded to the MyEclipse folder. This resulted in GEF appearing in the Eclipse product configuration under the Eclipse Platform node.
This solved the problem with JasperAssistant, it was now working as expected. The only thing I did was install the feature folder, which simply contained plugin configuration information. I still only had one GEF plugin installed, not two.
However, this caused MyEclipse to have errors because it could no longer find GEF, which is required by some other plugins that are provided with MyEclipse.
My second attempt to fix the problem involved looking for any references to GEF in the Eclipse and the MyEclipse folder to see if I could change a configuration file to fix the problem. That is when I discovered GEF was configured as a provided plugin in the Web Development Tooling feature. After observing the required plugins section of the features.xml file I checked the features.xml file fo the JasperAssitant plugin and discovered that GEF is a required plugin. In no big leap in logic I simply changed the WDT feautres.xml file to make the GEF plugin required rather than provided. This solved all of my problems.
In summary, I have only one version of GEF installed and that version was part of the MyEclipse distribution. The only changes I made where to add the features folder from the GEF distribution I downloaded (which is just configuration information) and to change GEF from being a provided plugin to a required plugin within the WDT feature.xml file.
Based on this I don’t see how the version distributed with MyEclipse is an issue at all as you indicated. It seems to be a configuration issue only. In my mind, the big question is whether or not provided plugins of one feature can be required plugins of another feature. Based on my experience described here, the answer would be no.
If the answer is indeed no that means users of MyEclipse will have problems if they install third-party plugins that require plugins that are already part of the MyEclipse distribution as provided plugins. In fact, the problem would not be limited to MyEclipse but would be a problem with Eclipse in general.
Scott AndersonParticipantAfter the install was complete I tried to use JasperAssistant to create a report when I encountered an error that seemed to point to GEF not being available to JasperAssistant.
Actually, that’s an overly broad interpretation of the message. The error you reported was:
!ENTRY org.eclipse.core.runtime 4 2 Jul 07, 2004 19:20:06.345
!MESSAGE Problems occurred when invoking code from plug-in: “org.eclipse.core.runtime”.
!STACK 0
java.lang.NoClassDefFoundError: org/eclipse/gef/ui/palette/FlyoutPaletteComposite$FlyoutPreferences
at com.jasperassistant.designer.editors.ReportEditor.n(SourceFile:248)
at com.jasperassistant.designer.editors.ReportEditor.x(SourceFile:268)
at com.jasperassistant.designer.aE.createPartControl(SourceFile:150)This error shows two things you need to take into account. First, it’s inside a JasperAssistant stack frame showing that Eclipse has already loaded the plugin. It wouldn’t even have tried to load it if the runtime couldn’t find a version of GEF 3.0, since JasperAssistant’s plugin.xml file requires it. So, Eclipse did find the version of GEF in the MyEclipse distribution. The second thing to notice is that the problem specificly says that a single class couldnt’ be found. This is due to a difference in the GEF implementation that was packaged with MyEclipse 3.8 Beta 1, and the one required by JasperAssistant. As a result, the class needed wasn’t found. Eclipse couldn’t tell that there was a problem until after it loaded JasperAssistant since the GEF team labled them both as 3.0.
To verify that this is the case, I installed our pre-release of MyEclipse 3.8 Beta 2, which includes GEF 3.0 final, on Eclipse 3.0. I then downloaded and unzipped JasperAssistant into the Eclipse plugins folder of the base installation. I started the installation and both MyEclipse and JasperAssistant both worked just fine.
In my mind, the big question is whether or not provided plugins of one feature can be required plugins of another feature. Based on my experience described here, the answer would be no.
If the answer were truly “no”, none of us could use any of the Eclipse platform, JDT, or PDE plugins since they’re all packaged in Eclipse as platform features. So, naturally the answer is really “yes”. 🙂
Wait for 3.8 Beta 2, probably available on Monday, and you’ll be fine.
Samer KanjoParticipantThis is due to a difference in the GEF implementation that was packaged with MyEclipse 3.8 Beta 1, and the one required by JasperAssistant. As a result, the class needed wasn’t found. Eclipse couldn’t tell that there was a problem until after it loaded JasperAssistant since the GEF team labled them both as 3.0.
But I have JasperAssistant working with Beta 1. How can that be explained if there is a compatibility problem?
Scott AndersonParticipantI can’t answer that question because I never saw the compatability problem. I performed the tests I stated with Beta 2 and everything is correctly functioning. If I had to speculate, I’d guess that at some point in inadvertantly installled GEF 3.0 Final, thus solving the compatibility problem and causing both products to operate correctly.
Samer KanjoParticipantHmmm, we don’t seem to be going anywhere with this. I guess the point is moot since I do have JasperAssistant working just fine. I look forward to Beta 2 to determine if JasperAssistant works without editing the WDT config files.
Riyad KallaMemberPlease post if there is still a problem with Beta2.
Samer KanjoParticipantI performed a clean install of Eclipse 3.0, MyEclipse 3.8 Beta 2, and JasperAssistant and everyting worked without modifying the feature files.
Scott AndersonParticipantThanks for the followup. Glad all is well now and thanks for initially bringing the problem to our attention. 🙂
-
AuthorPosts