Why eclipse does not find my features? - eclipse

I have written some eclipse plugins and consolidated them in featues. If the features does only contain plugins all is ok. But if I include a feature to a feature then I get the following error:
Unable to find feature "<featureName>" with version in range [2.6.0,2.6.1).
where featuerName is the including feature. I tinkered with the version numbers of the included feature without success.
here comes the including feature.xml
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="de.mdsd.xtext.support.validator.model.sdk"
label="Xtext Support Validator Generator Feature"
version="2.6.0.qualifier"
provider-name="XXX Software">
<description>
This plugin provides a small DSL for describing and generating an Xtext validator class.
</description>
<includes
id="de.mdsd.xtext.support.sdk.sdk"
version="[2.6.1,3.0.0)"/>
<requires>
<import plugin="org.eclipse.xtext"/>
<import plugin="org.eclipse.equinox.common" version="3.5.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.emf.codegen.ecore" version="2.10.2" match="greaterOrEqual"/>
<import plugin="de.mdsd.xtext.swtch.model" version="2.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.xtext.util"/>
<import plugin="org.eclipse.emf.ecore"/>
<import plugin="org.eclipse.emf.common"/>
<import plugin="org.eclipse.xtext.xbase.lib"/>
<import plugin="org.antlr.runtime"/>
<import plugin="org.eclipse.xtext.common.types"/>
<import plugin="org.apache.log4j"/>
<import plugin="org.eclipse.xtext.ui"/>
<import plugin="org.eclipse.ui.editors" version="3.5.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ui.ide" version="3.5.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.xtext.ui.shared"/>
<import plugin="org.eclipse.ui"/>
<import plugin="org.eclipse.xtext.builder"/>
<import plugin="org.eclipse.xtext.common.types.ui"/>
<import plugin="org.eclipse.xtext.ui.codetemplates.ui"/>
<import plugin="org.eclipse.compare"/>
<import plugin="de.mdsd.xtext.support.sdk" version="2.1.0" match="greaterOrEqual"/>
<import plugin="de.mdsd.xtext.up.name.providerswitch.model" version="1.4.0" match="greaterOrEqual"/>
</requires>
<plugin
id="de.mdsd.xtext.support.validator.model"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="de.mdsd.xtext.support.validator.model.ui"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
</feature>
here comes the included feature.xml
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="de.mdsd.xtext.support.sdk.sdk"
label="Xtext Support Feature"
version="2.6.1.qualifier"
provider-name="MDSD Software">
<description url="http://www.example.com/description">
This is a collection of classes that support the development
of Xtext generated tools.
Now it contains switches and name providers for GenModel-, Ecore models and Xtext grammars.
</description>
<copyright url="http://www.example.com/copyright">
Copyright Olaf Bigalk 2013
</copyright>
<license url="http://www.example.com/license">
EPL
</license>
<requires>
<import plugin="org.eclipse.emf.ecore" version="2.9.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.xtext" version="2.4.2" match="greaterOrEqual"/>
<import plugin="org.eclipse.xtend.lib"/>
<import plugin="com.google.guava"/>
<import plugin="org.eclipse.xtext.xbase.lib"/>
<import plugin="org.eclipse.emf.codegen.ecore"/>
<import plugin="org.eclipse.xtext.ui" version="2.4.3" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.core" version="3.9.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.xtend.typesystem.emf" version="1.4.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.xtext.xbase" version="2.8.3" match="greaterOrEqual"/>
<import plugin="org.eclipse.emf" version="2.6.0" match="greaterOrEqual"/>
</requires>
<plugin
id="de.mdsd.xtext.support.sdk"
download-size="0"
install-size="0"
version=""
unpack="false"/>
<plugin
id="de.mdsd.xtext.support.xtend.utils"
download-size="0"
install-size="0"
version=""
unpack="false"/>
<plugin
id="de.mdsd.xtext.support.xbase.utils"
download-size="0"
install-size="0"
version=""
unpack="false"/>
<plugin
id="de.mdsd.xtext.support.utils"
download-size="0"
install-size="0"
version=""
unpack="false"/>
</feature>
What is the reason for this error ?

You can't use a version range like [2.6.1,3.0.0) in the includes element of a feature.xml.
Either specify the exact version of the feature to be included (2.6.1.qualifier) or specify 0.0.0 to not check the version.

Related

RCP Application not launching correctly after updating

I have an RCP application that I'm trying to update to a newer version. Selecting the update-site zip and walking through the Install/ Update wizard works fine. Before the restart dialog show pops up, I do see the following:
enter image description here
After restarting, I see framework exceptions, some panels/ UI elements not being able to load, and CoreExceptions. It's almost as if the plugins that are updated cannot be found/ resolved in the application anymore. I've checked the install plugins/ and features/ directory and they are in fact present. A subsequent restart resolves the issues.
Why do the new bundles not resolve after the Update/Install restart wizard?
This is what my base RCP application .product looks like:
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
<product name="RCP Application" uid="com.ibm.rcp.product" id="my.rcp.ide" application="org.eclipse.ui.ide.workbench" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="true" autoIncludeRequirements="true">
<aboutInfo>
<image path="about/rcp.gif"/>
<text>
%blurb
</text>
</aboutInfo>
<configIni use="default">
</configIni>
<launcherArgs>
<programArgs>-showlocation
-pluginCustomization plugin_customization.ini
--launcher.defaultAction
openFile
--launcher.appendVmargs
</programArgs>
<programArgsLin>-vm jdk/bin/java
--launcher.GTK_version 3
</programArgsLin>
<programArgsMac>-vm ../Eclipse/jdk/Contents/Home/bin/java
</programArgsMac>
<programArgsWin>-vm jdk/bin/javaw
</programArgsWin>
<vmArgs>-Dosgi.requiredJavaVersion=11
-Dsun.java.command=Eclipse
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=11
-Dosgi.dataAreaRequiresExplicitInit=true
-Dorg.eclipse.swt.graphics.Resource.reportNonDisposed=false
-Xms256m
-Xmx2048m
</vmArgs>
<vmArgsMac>-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
</launcherArgs>
<windowImages i16=" ... my ... rcp ... icons"/>
<splash
location="my.rcp.product"
startupProgressRect="0,260,574,8"
startupMessageRect="10,235,320,20"
startupForegroundColor="0F62FE" />
<launcher name="myapp">
<linux icon="/icons/rcp.xpm"/>
<macosx icon="/icons/rcp.icns"/>
<win useIco="true">
<ico path="/icons/rcp.ico"/>
<bmp/>
</win>
</launcher>
<intro introId="org.eclipse.ui.intro.universal"/>
<vm>
</vm>
<plugins>
</plugins>
<features>
<feature id="my.rcp.feature" installMode="root"/>
...some eclipse features...
</features>
<configurations>
<plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
<property name="osgi.instance.area.default" value="#user.home/.workspace" />
<property name="eclipse.p2.skipMigrationWizard" value="true" />
</configurations>
<preferencesInfo>
<targetfile overwrite="false"/>
</preferencesInfo>
<cssInfo>
</cssInfo>
</product>

How to make a Eclipse plug-in deployable in many Eclipse versions?

I wrote my own Eclipse plug-in for Eclipse Oxygen 3a. It works perfectly in Eclipse Oxygen 3a.
Now I'm being required to deploy the same plug-in in newer versions of Eclipse, but when the plug-in is being installed in, for instance, Eclipse Photon, the install window says:
Cannot perform operation. Computing alternate solutions, may take a while: ...
It indeed takes a long while and ends up saying that my plug-in will not be installed.
What to do to make this plug-in workable to more than one Eclipse version?
Update 1
As asked, this is the Require-Bundle:
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.jface.text,
org.eclipse.core.resources,
org.eclipse.ui.editors,
org.eclipse.ui.views;bundle-version="3.8.0",
org.eclipse.ui.ide,
org.eclipse.jdt.ui;bundle-version="3.13.52",
org.eclipse.jdt.core;bundle-version="3.13.50"
There is no Import-Bundle.
Update 2
The feature.xml file can be seen below. I have a plug-in site deployed in an internal Apache web server and use "Install new software" option in Help menu of Eclipse to install from thare.
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="MyPluginFeature"
label="MyPlugin"
version="0.4.0"
provider-name="MyPlugin.com"
plugin="MyPlugin">
<description url="http://www.example.com/description">
</description>
<copyright url="http://www.example.com/copyright">
</copyright>
<license url="http://www.example.com/license">
</license>
<url>
<update label="MyPlugin site" url="http://acme.com/myplugin"/>
</url>
<requires>
<import plugin="org.eclipse.core.expressions" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.core.filesystem" version="1.3.0" match="compatible"/>
<import plugin="org.eclipse.core.runtime" version="3.12.0" match="compatible"/>
<import plugin="org.eclipse.core.resources" version="3.12.0" match="compatible"/>
<import plugin="org.eclipse.core.runtime" version="3.13.0" match="compatible"/>
<import plugin="org.eclipse.core.filesystem" version="1.7.0" match="compatible"/>
<import plugin="org.eclipse.text" version="3.6.0" match="compatible"/>
<import plugin="org.eclipse.osgi" version="3.7.0" match="compatible"/>
<import plugin="org.eclipse.equinox.common" version="3.8.0" match="compatible"/>
<import plugin="org.eclipse.core.jobs" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.equinox.registry" version="3.4.0" match="compatible"/>
<import plugin="org.eclipse.equinox.preferences" version="3.4.0" match="compatible"/>
<import plugin="org.eclipse.core.contenttype" version="3.3.0" match="compatible"/>
<import plugin="org.eclipse.equinox.app" version="1.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.equinox.common" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.equinox.registry" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.osgi" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.core.commands" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.equinox.common" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.core.runtime" version="3.2.0" match="compatible"/>
<import plugin="org.eclipse.swt" version="3.103.0" match="compatible"/>
<import plugin="org.eclipse.jface" version="3.13.0" match="compatible"/>
<import plugin="org.eclipse.ui.workbench" version="3.105.0" match="compatible"/>
<import plugin="org.eclipse.core.expressions" version="3.4.0" match="compatible"/>
<import plugin="org.eclipse.swt" version="3.104.0" match="compatible"/>
<import plugin="org.eclipse.core.commands" version="3.4.0" match="compatible"/>
<import plugin="org.eclipse.equinox.common" version="3.3.0" match="compatible"/>
<import plugin="org.eclipse.core.runtime" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.compare.core" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.core.expressions" version="3.4.100" match="compatible"/>
<import plugin="org.eclipse.jface.text" version="3.8.0" match="compatible"/>
<import plugin="org.eclipse.ui" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.core.runtime" version="3.11.0" match="compatible"/>
<import plugin="org.eclipse.core.filesystem" version="1.2.0" match="compatible"/>
<import plugin="org.eclipse.core.filebuffers" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.core.resources" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.text" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.ltk.core.refactoring" version="3.7.0" match="compatible"/>
<import plugin="org.eclipse.jface.text" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.ui.navigator" version="3.3.200" match="compatible"/>
<import plugin="org.eclipse.compare" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.team.core" version="3.4.100" match="compatible"/>
<import plugin="org.eclipse.team.ui" version="3.4.100" match="compatible"/>
<import plugin="org.eclipse.ui.editors"/>
<import plugin="org.eclipse.ui.views" version="3.8.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ui.ide"/>
<import plugin="org.eclipse.jdt.ui" version="3.13.52" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.core" version="3.13.50" match="greaterOrEqual"/>
</requires>
<plugin
id="org.eclipse.core.resources"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.jdt.core"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.core.runtime"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.core.filesystem"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.text"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.equinox.common"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ui"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.jface"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ui.workbench.texteditor"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ltk.core.refactoring"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ltk.ui.refactoring"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="MetaCoder"
download-size="0"
install-size="0"
version="0.4.0"
unpack="false"/>
</feature>
Update 3
Remediation window:
Update 4
After the unsuccessful atempt to install the plug-in in Eclipse JEE 2019-Jul I had the following error message:
Cannot complete the install because of a conflicting dependency.
Software being installed: MyPlugin 0.4.0 (MyPluginFeature.feature.group 0.4.0)
Software currently installed: Eclipse Platform 4.13.0.v20190916-1323 (org.eclipse.platform.feature.group 4.13.0.v20190916-1323)
Only one of the following can be installed at once:
Core File Systems 1.7.500.v20190620-1312 (org.eclipse.core.filesystem 1.7.500.v20190620-1312)
Core File Systems 1.7.0.v20170406-1337 (org.eclipse.core.filesystem 1.7.0.v20170406-1337)
Core File Systems 1.7.400.v20190518-1151 (org.eclipse.core.filesystem 1.7.400.v20190518-1151)
Cannot satisfy dependency:
From: MyPlugin 0.4.0 (MetaCoderFeature.feature.group 0.4.0)
To: org.eclipse.equinox.p2.iu; org.eclipse.core.filesystem [1.7.0.v20170406-1337,1.7.0.v20170406-1337]
Cannot satisfy dependency:
From: Eclipse Platform 4.13.0.v20190916-1323 (org.eclipse.platform.feature.group 4.13.0.v20190916-1323)
To: org.eclipse.equinox.p2.iu; org.eclipse.core.filesystem [1.7.500.v20190620-1312,1.7.500.v20190620-1312]
Update 5
IN the feature editor I decided to click the [Compute] button and all the dependencies were recomputed. As a result below we have the new feature.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="MyPluginFeature"
label="MyPlugin"
version="0.4.0"
provider-name="ACME"
plugin="MyPlugin">
<description url="http://www.example.com/description">
</description>
<copyright url="http://www.example.com/copyright">
</copyright>
<license url="http://www.example.com/license">
</license>
<url>
<update label="Site do MyPlugin" url="http://example.org/myplugin"/>
</url>
<requires>
<import plugin="org.eclipse.ui" version="3.5.0" match="compatible"/>
<import plugin="org.eclipse.core.runtime" version="3.12.0" match="compatible"/>
<import plugin="org.eclipse.jface.text" version="3.8.0" match="compatible"/>
<import plugin="org.eclipse.core.resources" version="3.12.0" match="compatible"/>
<import plugin="org.eclipse.ui.editors"/>
<import plugin="org.eclipse.ui.views" version="3.8.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ui.ide"/>
<import plugin="org.eclipse.jdt.ui" version="3.13.52" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.core" version="3.13.50" match="greaterOrEqual"/>
</requires>
<plugin
id="MyPlugin"
download-size="0"
install-size="0"
version="0.4.0"
unpack="false"/>
</feature>
In feature.xml only your own plug-ins should be specified as <plugin ... />, not the (Eclipse) plug-ins/bundles that are required.
For example,
<plugin
id="org.eclipse.core.resources"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
makes the plug-in/bundle org.eclipse.core.resources of the current version (version="0.0.0" is a placeholder that will be replaced by the current version when building the update site) part of the thing that can be installed. Because org.eclipse.core.resources is a singleton plug-in/bundle (Bundle-SymbolicName: org.eclipse.core.resources; singleton:=true), it cannot be used with the plug-in/bundle of another version. This prevents your plug-in from being deployable in many Eclipse versions.

Tycho - Eclipse RCP Product (re)branding issue : wrong splash screen shown

Goal:
I would like to make an Eclipse RCP product feature-based with existing Eclipse.org features and additional features of my own.
Introduction:
To start fresh, I've followed the Lars Vogel's Eclipse Tycho tutorial up to step 9.
I made just few adjustments:
I'm using the latest version of Eclips RCP platform (Oxygen)
I'm using the latest version of Eclipse Tycho (1.0.0)
I had to set the autostart-mode of the plugins part of the configuration of the product (c.f. com.vogella.tycho.rcp.product file)
I've added these two branding files
the "splash.bmp" image in the root folder of the com.vogella.tycho.rcp plugin, furthermore I've added the splash.bmp to binary build defined by the build.properties file
the "icons/product.ico" icon to com.vogella.tycho.product project
finally I've completed the definition of the product, defined by com.vogella.tycho.rcp.product file, with the icon and and the location of the splash image.
... I built the product with Maven 3, executing the following command from the root project folder:
mvn clean verify
And finally I made a smoke test:
run-product.bat
Outcome: the startup is as expected, the icon appears in the taskbar and the right splash screen show-up. alright !
The issue:
Now, I add to the production definition exactly one feature from Eclipse.org : org.eclipse.epp.package.java.feature
Then I redo the build and the smoke test ... and unfortunately it is the Eclipse "Oxygen" splash screen that shows-up ...
How could I prevent the Eclipse "Oxygen" splash screen to show up and to have my splash screen instead ?
Product definition file:
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
<product name="com.vogella.tycho.rcp" uid="foo" id="com.vogella.tycho.rcp.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="true">
<configIni use="default"></configIni>
<launcherArgs>
<programArgs>-clearPersistedState</programArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
</launcherArgs>
<windowImages/>
<splash location="com.vogella.tycho.rcp" />
<launcher name="foo">
<win useIco="true">
<ico path="icons/product.ico"/>
<bmp/>
</win>
</launcher>
<vm>
</vm>
<plugins>
</plugins>
<features>
<feature id="org.eclipse.e4.rcp" installMode="root"/>
<feature id="com.vogella.tycho.feature" version="1.0.0.qualifier"/>
<feature id="org.eclipse.emf.common"/>
<feature id="org.eclipse.emf.ecore"/>
<feature id="org.eclipse.epp.package.java.feature"/>
</features>
<configurations>
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="3" />
</configurations>
</product>
Attachement:
Eclipse Project achive
After hours of debugging the Maven build, I figured out that the feature "org.eclipse.epp.package.java.feature" seems to contain a configuration with touchpoints to modify the config.ini and therefore change values of osgi.splashPath, eclipse.product and eclipse.application.
So I decided to change the product definition file, and to use the "org.eclipse.jdt" feature (instead of "org.eclipse.epp.package.java.feature") and added its dependencies to the product definition file.
Now both the new icon and new splash screen appears as desired.
Here is the final product definition file:
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
<product name="com.vogella.tycho.rcp" uid="foo" id="com.hipperos.workbench.rcp.product" application="org.eclipse.ui.ide.workbench" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="true">
<configIni use="default">
</configIni>
<launcherArgs>
<programArgs>-clearPersistedState
</programArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
</launcherArgs>
<windowImages/>
<splash
location="com.vogella.tycho.rcp" />
<launcher name="foo">
<win useIco="true">
<ico path="icons/product.ico"/>
<bmp/>
</win>
</launcher>
<vm>
</vm>
<plugins>
</plugins>
<features>
<feature id="org.eclipse.e4.rcp" installMode="root"/>
<feature id="com.vogella.tycho.feature" version="1.0.0.qualifier"/>
<feature id="org.eclipse.emf.common"/>
<feature id="org.eclipse.emf.ecore"/>
<feature id="org.eclipse.rcp" version="4.7.0.v20170308-2000"/>
<feature id="org.eclipse.jdt" version="3.13.0.v20170308-2105"/>
<feature id="org.eclipse.platform" version="4.7.0.v20170308-2000"/>
<feature id="org.eclipse.equinox.p2.core.feature" version="1.4.0.v20170208-2010"/>
<feature id="org.eclipse.ecf.core.feature" version="1.3.0.v20170110-1317"/>
<feature id="org.eclipse.ecf.filetransfer.feature" version="3.13.5.v20170216-0456"/>
<feature id="org.eclipse.help" version="2.2.100.v20170308-2000"/>
</features>
<configurations>
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="3" />
</configurations>
</product>

Eclipse - how to reference current feature version inside feature manifest

Inside Enide Node.js feature manifest I am referencing "org.nodeclipse" feature.
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.nodeclipse.enide.nodejs.feature"
label="Enide Node.js"
version="0.10.0.qualifier"
...
<!-- http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Ffeature_manifest.html -->
<requires>
<import feature="org.chromium.sdk" version="0.3.9" match="compatible"/>
<import feature="org.chromium.debug" version="0.3.9" match="compatible"/>
<import feature="org.nodeclipse" version="0.10.0" match="perfect"/>
<import feature="com.eclipsesource.jshint.feature" version="0.9.9" match="greaterOrEqual"/>
The intention is that "org.nodeclipse" is updated with "org.nodeclipse.enide.nodejs.feature" and must be of the same version.
Can I reference version like version=feature.version match="perfect" ?

"Unknown extension point" in plugin.xml problem

In "Contributing to Eclipse" book it is written that to introduce an extension point you should type the next section in plugin.xml
<extension point="org.eclipse.contribution.junit.listeners">
<listener
class="org.eclipse.contribution.junit.RunTestAction$Listener">
</listener>
</extension>
But this code gives me the "Unknown extension point" error".
Read the book carefully, extension point is defined in the same plugin.xml as <extension-point id="listeners" name="Test Listeners"/>
Get sample code from Downloads at http://www.informit.com/store/product.aspx?isbn=0321205758
<?xml version="1.0" encoding="UTF-8"?>
<plugin
id="org.eclipse.contribution.junit"
name="JUnit Plug-in"
version="1.0.0"
provider-name=""
class="org.eclipse.contribution.junit.JUnitPlugin">
<runtime>
<library name="contribjunit.jar">
<export name = "*"/>
</library>
</runtime>
<requires>
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.ui"/>
<import plugin="org.eclipse.jdt.core"/>
<import plugin="org.junit"/>
<import plugin="org.eclipse.debug.core"/>
<import plugin="org.eclipse.jdt.launching"/>
</requires>
<extension-point id="listeners" name="Test Listeners"/>
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
objectClass="org.eclipse.jdt.core.IType"
id="org.eclipse.contribution.junit.runtest">
<action
label="Run Test"
class="org.eclipse.contribution.junit.RunTestAction"
enablesFor="1"
id="org.eclipse.contribution.junit.runtest.action">
</action>
</objectContribution>
</extension>
<extension point="org.eclipse.contribution.junit.listeners">
<listener
class="org.eclipse.contribution.junit.RunTestAction$Listener">
</listener>
</extension>
</plugin>
Cheers,
Max