Setting default perspective in Eclipse for plugin development - eclipse

I'm creating some plugins for Eclipse, and I have selected as Target Platform another Eclipse installation, when I run the plugin it launch the Eclipse instance successfully but it always is opened on the Resources perspective, anyone knows how to specify the default for example Java EE perspective when launching another instance of Eclipse selected as target platform?

You can set the default perspective in the plugin_customization.ini file in the target platform plugins/org.eclipse.sdk (or it might be plugins/org.eclipse.platform depending on your launch configuration). Add the line:
org.eclipse.ui/defaultPerspectiveId=perspective id

Related

Launching Eclipse plug in template

I created a Eclipse plug-in project by selecting a plug-in template provides by the eclipse. Then i ran the plug-in it opened another eclipse and the plug-in executed there.Why so? is the plugin taking eclipse's application class to create workbench?
As an elaboration of "If you want to run the plugin in your main workspace you will have to export the plugin and install it in your main Eclipse." that #greg-449 had in his answer. You can do this.
Step 1 - Export your plugin
From the File menu, choose Export... and then choose the Deployable plug-ins and fragments wizard.
Step 2 - Configure your Wizard Options
Select the plug-ins you want to export.
As the destination, choose Install into host
Press Finish
Step 3 - Confirm unsigned content
As you are probably not signing your plug-in, but you do trust it, say Yes to the Warning: you are installing software that contains unsigned content.
Step 4 - Restart Eclipse
Restart Eclipse when prompted to to enable the plug-ins.
Result
You should now see your new plug-ins. To make this example I used the new Plug-in wizard and choose the "Hello, World Command" template. The arrows below point to the contributions in the UI that the plug-in made.
When you run a plugin (Run As > Eclipse Application) Eclipse starts a new instance of Eclipse including your plugin and uses a new workspace. This enables you to test the plugin without damaging your main Eclipse installation and workspace.
If you want to run the plugin in your main workspace you will have to export the plugin and install it in your main Eclipse.
If you want to run your plugin as part of an RCP you can set the application or product launched in the 'Run > Run Configurations...' entry.
For example:
Here I am running a product called 'greg.music.e4.rcp.product'

How can I use an existing .target file in Eclipse?

I would like to develop plugins for an RCP Applicaction. Now, they provide a .target file for development.
I tried to read on several Eclipse pages but I could not find out how to use that file. Do I have to load it somewhere? Do I have to add it at a specific location?
I'm sure, I missed something...
Please give me a hint.
Use the target definition editor to open the target file.
You will need to have the Plug-in development tools (PDE) installed to develop plug-ins for RCP applications. PDE can be installed into an existing IDE from the projects download page.
Or you can download an Eclipse package that contains PDE. This page gives an overview which package contains what. However, I recommend to choose the Eclipse for RCP and RAP develoipers
If you have PDE installed and the target file is located in the workspace, it is the default editor (i.e. you can simply doiuble click the respective entry in the package explorer).
Use the Set as target platform in the top right corner of the target editor to make it the current target platform.
The current target platform constitutes the plug-ins which your workspace will be built and run against. It describes the platform that you are developing for.
Once a target platform is known to the IDE it can also the changed through the Plug-in Development > Target Platform preference page.
There is also an option to show the name of the current target platform in the status bar on the Plug-in Development preference page.

Debugging Eclipse plug-ins

This is my first attempt at creating an Eclipse plug-in. I've created one, along with a feature and update site. I set the target platform as my local Eclipse installation. When I run/debug the plugin from within the development environment everything works fine.
Now, my colleague installed the plug-in from the update site that I hosted. When he starts using any of the functionality exposed by my plugin he gets runtime exceptions.
He sees null pointer exceptions which didn't occur when I ran my plug-in project from my development environment.
I have a wizard that's part of my plug-in. When he close it he gets a "Unhandled event loop exception", and the wizard doesn't close. I didn't have this issue when I was running/debugging my plugin in my development environment.
Now I'm confused as to why the same plug-in is behaving differently in the production environment, as against the dev environment and when I was debugging it from my IDE. The target platform in both cases is the same Eclipse version. What could be the reasons?
And how do I debug the plug-in in a production environment? Is there a remote debugging capability for debugging the plug-ins on the production environment?
Any suggestions would be really useful!
To remote debug your plug-in, first add debug arguments to your target Eclipse .ini file
-vmargs
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
before launching it.
Then open another Eclipse instance with a workspace containing your plug-in project.
Open Run > Debug Configurations..., select Remote Java Application and create a new configuration.
As Project, browse and select your plug-in project.
Also fill in your connection properties (host of target Eclipse and port 1044).
Launching the newly created debug configuration allows you to debug your plug-in the same way you debug locally.
Now I'm confused as to why the same plug-in is behaving differently in
the production environment, as against the dev environment and when I
was debugging it from my IDE. The target platform in both cases is the
same eclipse version. What could be the reasons?
This is a classic: Eclipse plugins and RCP applications do indeed behave differently between PDT (the Eclipse IDE) and the exported product.
In your case, a NullPointerException thrown from the exported version but not from Eclipse is 9 times out of 10 an image or other resource files (properties, etc.) that is loaded by your code but is not listed in the build.properties of your plugin.
Anyway, you'll need to check the logs to retrieve the stacktrace and hunt down its cause. Such logs could be found in your friend's workspace under le .metadata/.log file
From your development workspace as it stands now, use the "Debug As -> Eclipse Application" menu item to startup a test workspace. When it starts up, you'll have two workspaces running: the original development workspace and the new test workspace. You can set breakpoints in your plugin code in the development workspace and run your plugin in the test workspace.
When your plugin execution in the test workspace gets to one of your breakpoints, execution will pause and you can use the Debug view in your development workspace to look at variables, set more breakpoints or anything else you want to do to debuf your plugin.
See the Apache Wiki for Developing with Eclipse.
Under Windows 10 with Tomcat running as a windows service I started:
tomcat8.5\bin\Tomcat8w.exe
& added in the Java tab as the first entry in Java Options to enable remote debugging:
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

Unable to debug Eclipse Application because of missing classes

I have written an DSL plug-in using Xtext 2.2.1. After upgrading to Xtext 2.3.0, I cannot debug the related Eclipse Application (i.e. I'm using a launch config which is labeled "Eclipse Application" to start an instance with my DSL plug-in from within Eclipse) because of this error:
Error instantiating builder 'org.eclipse.xtext.ui.shared.xtextBuilder'.
Plug-in org.eclipse.xtext.ui.shared was unable to load class org.eclipse.xtext.ui.shared.internal.ExecutableExtensionFactory.
org/eclipse/xtext/ui/guice/AbstractGuiceAwareExecutableExtensionFactory
What I tried:
I deselected all bundles from the target platform in the launch configuration, clicked "Add Required Plug-ins", tried again, same error.
I made sure that org.eclipse.xtext.ui and org.eclipse.xtext.ui.shared version 2.3.0 are available in the plug-ins list and both are enabled.
When I install the plug-in into my IDE, it works perfectly. I just can't launch an Eclipse Application from within the IDE.
"Validate Plug-ins" doesn't show any problems.
Any ideas how I can fix this?
While this is neither an answer to the question, why the launcher stopped working, nor a way to fix the existing launcher, you should at least be able to get back to work by creating a new launcher. To do this, just select Run As > Eclipse Application from the context menu of the XText project. This way, Eclipse should handle the creation and configuration of the launcher for you.
Be sure that Eclipse actually creates a new launcher! If Eclipse finds an existing Eclipse Application launcher, it might use that one instead. You should at least rename the old launcher, so you can tell which one is used (shown at the top of the Console View). The new launcher will by default have the name "Eclipse Application". If Eclipse still uses the old launcher you may have to remove that launcher first.
If you want to find out what was wrong with the old launcher, or if that launcher was specifically configured and you want to preserve that configuration, this may help: Eclipse stores the launcher configurations in the directory .metadata/.plugins/org.eclipse.debug.core/.launches/ located in the workspace, so you could back up the old launcher and then compare it to the newly created one using some diff tool.

Customizing Eclipse application launcher when launching a plugin

We are writing an Eclipse plugin that will work in a ClearCase environment i.e., our plugin will work along with the ClearCase SCM plugin for eclipse(available from IBM).
When developing the plugin, our eclipse(RCP & RAP) don't need ClearCase plugin. However, when we launch the plugin thru "Eclipse Application Launcher", the new eclipse does need the ClearCase plugin.
Is it possible to configure the "Eclipse Application Launcher" to include ClearCase plugin(or any different plugin that's not in the base eclipse) when it fires up another eclipse instance?
I could not find a way to do this from the documentation.
I think Target platform is what you are looking for.
You can use a pure Eclipse release(such as Juno) as development tool, then use another collection of compile and runtime plug-ins via specifying a target platform.