Eclipse p2 plugins from the dropins folder are installed but not activated - eclipse-plugin

I have an eclipse product built against eclipse platform 3.6.2. I have other external plugins (no features) that are built separately (against the same platform) and my product does not depend on them, but they do depend on some plugins in my product. These external plugins makes contributions to the menus.
When I run my application from Eclipse and I add the extenral plugins to my launcher, they work just fine and I can notice their menu contributions. But when I build my application using PDE (with p2 support) and I add the external plugins to the dropins folder. They do get detected in my list of installed plugins in the product installation details but the Plugin.start() does never get called, nor I see their menu contributions, also when I check them in the configuration tab, I notice that they are listed as < Plugin ID> [Starting] . But when running from eclipse, in the Configuration they are listed as [Active]
I did try to add the extension point org.eclipse.ui.startup but it didn't change anything, it doesn't get called either.
Could anybody please help me with such a problem, or even guide me on how to debug it, I can't seem to make the p2 to print any useful debugging information when installing my pluigns.

Its great that you have built them using p2 support. This means should now have a P2 metadata repository. Now to install, just dropping the the stuff into dropins folder is not enough. I should recommend to instead 'install' them using the Help -> Install new software...

Related

Plugin Compatibility Issue Eclipse Oxygen (4.7) and Java 9

We upgraded one of our Eclipse 3.x plugins to work with Java 9.
But when we generated the plugin update site content, and used Eclipse Update functionality to install the new version of the plugin, we encountered the following error in Eclipse Oxygen.
Removing part descriptor with the 'pluginxxx.bla.bla' id and the 'bla bla' description. Points to the invalid 'bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView' class.
This error also appears due to some of the bundled plugins of Eclipse Oxygen itself.
After a hard week we had to
Uninstall our plugin
Remove the older versions of the plugin from the Eclipse/plugins folder
Export the plugin as a deployable plugin under the eclipse plugins directory. (Eclipse/plugins/blabla.jar)
Restart Eclipse and it worked.
Right click the eclipse plugin project and Run as "Eclipse Application" works fine, but installing the plugin from an "Update Site" causes the plugin to fail loading.
We could not find a solution yet, but it certainly effects our delivery of the plugin. The plugin is used by almost 500 CS students on their personal computers, and 200 lab computers. So the update should be installed using regular Eclipse Update functionality, not by copying the jar into the plugins directory.
Was there a better way to fix this, or something quicker we could've tried (in case this happens again)?
Update (7 days into the problem)
We have a workaround:
Export the feature project with the following settings in the Export Wizard
Destination/ Directory: Folder of your Plugin Update Site project
Options/ Package as individual JAR archieves (selected)
Options/ Generate p2 repository (selected)
Options/ Allow for binary cycles in target platform (selected)
Options/ Use class files compiled in the workspace (essentially selected)
Install (or update) the plugin from the local (or remote) plugin update site, and the CompatibilityView problem is solved.
In order to have the category listing displayed correctly during install/update new software operations, we added a category.xml file (File/New/Other/Plugin-in Development/Category Definition) in the update site project, defined the categories, and added the feature (versioned as "qualifier").
This is certainly not the way it should be, and we just hope it will be solved in the future Eclipse releases.
By the way current Eclipse Photon integration version has the same problem unfortunately.

IntelliJ Run Configuration Broken by an Incompatible Plugin I Can't Uninstall?

I had been developing an application on a trial version of IntelliJ 2016 Ultimate. Since the trial version ran out, I resumed work using the Community Edition. However, trying to launch my application yielded the following error:
Unknown run configuration type #com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory
"No problem" I thought, just an incompatible plugin that was installed with Ultimate that I don't really need anyway. I opened the Plugins section of the Preferences menu, but I can't find the plugin in question. Below is a partial screenshot of the plugin list where I would expect to see the plugin listed in the error message.
The configuration can also not be edited from the Run/Debug Configurations menu, but lists the Run Configuration error as: "Broken configuration due to unavailable plugin or invalid configuration data."
Am I really unable to uninstall the Ultimate plugin preventing my run configuration from working from the Community Edition? What can I do to fix this if so?
It's have been a long time since this question was launched but it might be useful for new searches.
I got the same error with Dart and Flutter.
Just go to Menu >> File >> Settings. Then type plugins on the search box. Check if your plugins need to be updated (in my case Dart and Flutter). I the screenshot I had clicked in the "update" green button. So it turns into "Restart IDE" text. It should fix the problem once you restart the IDE.
To the best of my knowledge the community edition of IDEA will not load and run plugins that are not compatible with it. Moreover, by default, the community edition uses a different configuration directory than the Ultimate edition. So unless you modified the config directory to use, the community version should not be picking up the Ultimate Edition's plugins. Based on the error you show, I think the issue is you simply need to delete that Run configuration. The error is saying that that Run configuration wants to use a Plugin (The Tomcat Plugin) that is not available (i.e. not installed).
If you still want to confirm what plugins are installed, you can manually uninstall a plugin by removing it from the plugins directory. Note that some plugins are simply a standalone JAR, in the plugins directory, others are sub-directories within the plugins directory. Just delete the JAR or sub-directory.
That plugins directory is the idea config directory. See Directories used by the IDE to store settings, caches, plugins and logs for information on its location. On windows for example, by default it will be:
Ultimate: C:\Users\UserName\.IntelliJIdea2016\config\plugins
Community: C:\Users\UserName\..IdeaIC2016\config\plugins
UPDATE
I forgot to mention... bundled plugins are in ${idea-install-directory}/plugins. So for the ultimate edition, the Tomcat plugin is in ${idea-install-directory}/plugins/Tomcat. That is why, as you mentioned in your comment below, you are not seeing that plugin in the user installed plugin directory I mentioned above.
updating flutter and android studio worked in my
case
Simple upgrade Dart plugin..
Go to Settings/Plugins/Browse Repositories and search dart (Language) and upgrade
this will work.
I had a similar worded issue "Run Configuration Error: Broken configuration due to unavailable plugin or invalid configuration data."
In the bottom right part of the Rider IDE, you will see a popup that says
"Plugin supporting feature (Run Configuration[UNITY_ATTACH_AND_PLAY]) is currently disabled."
Click enable plugins, and restart when Rider asks you to do so.
If this does not work, remember that one possible reason is the issues with macOS indexing (my Macbook started to malfunction after its battery hit 0). A way to check is to try and search a file from the top right corner(). If you can not find existing files, this means macOS messed up with indexing.
To solve it, click Apple icon on top left side and go to System Preferences -> Spotlight -> Privacy Tab -> Add all folders to the "won't index" box -> Remove everything you have added so they get reindexed.
https://www.techradar.com/how-to/software/operating-systems/how-to-fix-a-mac-s-broken-find-function-1298964
Lastly, go to Rider and hit File -> Invalidate Caches and Restart.

How to ensure eclipse plugin has required bundles available?

I'm just starting to develop a new eclipse plugin where I want a web application server running in Eclipse. I found a nice blog, OSGi as a Web Application Server, that describes how to do this. The author suggests creating a target environment for my bundle requirements, and some of those bundles get pulled in from the Equinox Project SDK (now called Equinox Target Components in Juno). I notice that the tutorial project runs fine when my target platform is the platform I created in the tutorial, but fails to start when it is the default platform. So, now for my question...
If I need bundles that are not part of the default, how will my plugin project get access to those bundles? Will I need to deploy them along with my plugin? How would I know if the user's eclipse does or does not already have those required bundles?
You was not much clear about what kind of application you are developing. Running a web server in an Eclipse IDE as a plugin don't make any sense to me. This kind of server application is best just running on top of Equinox.
Anyway, the right path is to create a "Product Configuration" file and add categories that contains the needed bundles (go to File/Plug-in Development/Product Configuration).
With this file you can run an instance of the product (inside the IDE) and can export it (create a zip containing all needed bundles)
And if you want to able your user to install plugin inside his IDE you must create a P2 repository (using a Target Definition File) and expose the exported directory within a Http server. You could research about Tycho to build this kind of components in a maven style.
Well, I'm not sure if re-inventing the wheel again is really sufficient.
You might take a look at Pax-Web for inspiration on how to do it, or take a look Apache Karaf as a OSGi-Container (using Pax-Web). Or even better start contributing to one of the two :-)

How do I get a plugin with platform specific code to deploy to the correct platform using an eclipse p2 repository?

I have an Eclipse Feature that I'm building that contains a few plugins. One of the plugins uses the import package statement to declare a dependency on another plugin.
The other plugin has platform specific code and exists in another feature that I'm building. I have two plugins in this feature that have the platform specific code. One for os=win32 arch=x86 and the other for os=win32 arch=x86_64
Both features are being built and using Tycho and they both have p2 repositories that are successfully available.
So, I made a composite repository that points to both of these repositories, and then I use the "Install New Software..." command in my RCP app and point to the composite repository to install the first feature I mentioned.
The issue is that when the installation is done, the plugin that has the platform specific code has failed to install correctly. Specifically, the plugin for the x86 system shows up on my 64bit machine.
In your feature.xml, choose the plugin with platform specific code and add a platform filter. the filters are available on the right side (once you select the plugin). You can choose filters such as:
OS
WS
Language
Architecture
When your feature is published, p2 will generate the appropriate filters.
I found the answer.
I needed a p2.inf file sitting next to my feature.xml file in the first feature I mentioned in the question.
And in that p2.inf file, I needed this text...
requires.1.namespace=org.eclipse.equinox.p2.iu
requires.1.name=com.myplatform.specfic.bundle.win32.x86
requires.1.filter=(&(osgi.os=win32) (osgi.arch=x86))
requires.1.namespace=org.eclipse.equinox.p2.iu
requires.1.name=com.myplatform.specfic.bundle.win32.x86_64
requires.1.filter=(&(osgi.os=win32) (osgi.arch=x86_64))
I added this file to the build.properties as well to make sure it was included in the deployed feature
Then when I deployed the p2 repository and performed the install into my RCP application, the correct plugin was placed onto my 64 bit machine.
UPDATE: I was wrong here. This is NOT the correct answer. The incorrect plugin still gets installed on some machines.

exporting installed plugins from eclipse to another

How to export installed plugins from eclipse?
I want to use some of my installed plugins in another eclipse machine.
I don't want to download those again.
Regards
Start fresh and install plugins from an old install
The idea here is that you want to keep your old install intact, download a new indigo package (http://download.eclipse.org/) and just adds the existing plugins to your install. With Indigo this is now made super easy!
Step 1: Download and unzip your Indigo install: http://download.eclipse.org
Step 2: Import your plug-ins from your previous install by doing File > Import > Install > From existing install, pick your old install, select the plug-ins and there you go! You can chose to go piece meal, or chose to pick several entries, in any event dependency analysis will be performed to check the validity of the install.
Step 3: Click next a couple times and patiently wait for the bytes to download to your machine. Then restart and enjoy!
from http://lenettoyeur-on-eclipse.blogspot.com/2011/06/from-helios-to-indigo-is-easy.html
You can export the list of the features and plugins by going to File->Export->Install.
I’m bringing a really old thread to life here, but there’s a much more comfortable way to export your Eclipse plug-ins and use your setup on another machine now.
On http://profiles.yatta.de you can download the Yatta Launcher for Eclipse, which allows you to export your Eclipse & workspace setup (including your plug-in setup).
Export and installation are pretty straight forward:
Download the Launcher from http://profiles.yatta.de and start it
The tool will automatically discover your Eclipse installations. Find the one you want to export in the list (they are all named after your workspaces).
Click the Upload & Share button (the blue one) on the right of the entry you want to export.
(You won’t actually “share” your Eclipse or workspace with anyone. You’ll just upload a setup file with your metadata that only you have access to yourself. You could share this later, but you can also just keep it as a backup).
This solution does not only allow you to reuse your eclipse plug-in setup, but also your configured Git & task repositories and many other setup-specific settings.
Along with update sites, p2 can treat existing Eclipse installations as a source for the plugins to be installed.
If you access the Eclipse folder in another machine (which has the plugins installed) via shared folder in the network , then in your new Eclipse, open Preferences->Install/Update->Available Software Sites->Add->Local-> browse to the Eclipse->p2->org.eclipse.equinox.p2.engine->profileRegistry and select the profile.
Now in the target Eclipse you can install those plugins as if you are installing from an update site.
P2 (the bundle provisioning system) provides functionalities for shared bundle pooling, see
http://wiki.eclipse.org/Equinox/p2/Getting_Started#Bundle_pooling
It seems that feature is on its way: http://bugs.eclipse.org/282419
I don't know how to export a installed plugin,
but this answer helps for reinstalling an eclipse plugin from another eclipse installation. (How Do You Reinstall Installed Eclipse Plugins?)
Also See
Installing Eclipse (3.4+) plugins in a directory other than ECLIPSE_HOME/plugins
How To Add Perspectives In Eclipse?
You can simply copy the plug in folder from the other machine --(may be on a pendrive or cd )-- whatever suits you.
Then go to your ecplise,
File > Import... > Plug-in Development --> Plug-ins and Fragments Click "Next"
[Import From] -- Directory. Browse your plugins folder
Just Hit "Next"
From the left box, select individual or you may want to add all of it. Just hit
"AddAll ->"
And Just Hit "Next"
and there on just sit back let it do all the import work.
Dropping the right jars from your plugins directory to the target installation plugins directory should do the trick.