diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/.ratings
index b78c28a17cda209bfd559396ab41fb74d7bc08a4..fc03bd1ed395b26570cb889e72ed0a99db7e1a65 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/.ratings
@@ -1 +1 @@
-ToolingBaseUIActivator.java 42fa7691bceec500b4e08cb28ef7fc69b9f8f658 GREEN
+ToolingBaseUIActivator.java dbb6f64b87a553ffbcfeb92160d84b63073dfd89 GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/ToolingBaseUIActivator.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/ToolingBaseUIActivator.java
index 42fa7691bceec500b4e08cb28ef7fc69b9f8f658..dbb6f64b87a553ffbcfeb92160d84b63073dfd89 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/ToolingBaseUIActivator.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/ToolingBaseUIActivator.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.base.ui;
 
+import static org.eclipse.jface.resource.ResourceLocator.imageDescriptorFromBundle;
+
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
@@ -53,6 +55,6 @@ public class ToolingBaseUIActivator extends AbstractUIPlugin {
 
 	/** Returns image descriptor of the image in the kernel plugin. */
 	public static ImageDescriptor getImageDescriptor(String iconPath) {
-		return imageDescriptorFromPlugin(PLUGIN_ID, iconPath);
+		return imageDescriptorFromBundle(PLUGIN_ID, iconPath).orElse(null);
 	}
 }
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/.ratings
index 6b4246af401efaf593800f92066f95f1f1a9bddd..98429aa52a09641a8fd628740ef236e1897db259 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/.ratings
@@ -1 +1 @@
-HierarchicElementHandlerBase.java 5207a32e345912f16d753c466e9b603bb72bd2ef GREEN
+HierarchicElementHandlerBase.java eef567d577422c9cdfb8bff9a5238ebd2d08e3bd GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/HierarchicElementHandlerBase.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/HierarchicElementHandlerBase.java
index 5207a32e345912f16d753c466e9b603bb72bd2ef..eef567d577422c9cdfb8bff9a5238ebd2d08e3bd 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/HierarchicElementHandlerBase.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/extension/base/HierarchicElementHandlerBase.java
@@ -18,7 +18,6 @@ package org.fortiss.tooling.base.ui.extension.base;
 import java.util.List;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.resource.ImageDescriptor;
 import org.fortiss.tooling.base.model.base.HierarchicElementBase;
 import org.fortiss.tooling.base.model.element.IHierarchicElement;
 import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
@@ -30,7 +29,7 @@ import org.fortiss.tooling.kernel.ui.extension.base.NamedCommentedModelElementHa
  * @author mou
  */
 @SuppressWarnings({"rawtypes", "unchecked"})
-public class HierarchicElementHandlerBase<T extends HierarchicElementBase>
+public abstract class HierarchicElementHandlerBase<T extends HierarchicElementBase>
 		extends NamedCommentedModelElementHandlerBase<T> {
 
 	/** {@inheritDoc} */
@@ -50,10 +49,4 @@ public class HierarchicElementHandlerBase<T extends HierarchicElementBase>
 	public List<EObject> getSpecifications(T element) {
 		return (List)element.getSpecifications();
 	}
-
-	/** {@inheritDoc} */
-	@Override
-	public ImageDescriptor getIconImageDescriptor() {
-		return null;
-	}
 }
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/.ratings
index a43153e7ec1c24ed07b02f4c2668e456311d707a..265089733b90eb1665267688b6f3271af3126bdb 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/.ratings
@@ -1 +1 @@
-ToolingCommonUIActivator.java cce1178fb9941ee2d4d97cfdbe6af8cf94170fd3 GREEN
+ToolingCommonUIActivator.java 0e00121865e18435bb9f130e23eea6e07b43af46 GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/ToolingCommonUIActivator.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/ToolingCommonUIActivator.java
index cce1178fb9941ee2d4d97cfdbe6af8cf94170fd3..0e00121865e18435bb9f130e23eea6e07b43af46 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/ToolingCommonUIActivator.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/ToolingCommonUIActivator.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.common.ui;
 
+import static org.eclipse.jface.resource.ResourceLocator.imageDescriptorFromBundle;
+
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
@@ -53,6 +55,6 @@ public class ToolingCommonUIActivator extends AbstractUIPlugin {
 
 	/** Returns the image descriptor for the given icon file. */
 	public static ImageDescriptor getImageDescriptor(String path) {
-		return imageDescriptorFromPlugin(PLUGIN_ID, path);
+		return imageDescriptorFromBundle(PLUGIN_ID, path).orElse(null);
 	}
 }
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/.ratings
index d8aad1a695ee70a33a9224b9196e6a220822fcaf..12467927525d334654803c4f29f212de9bb6ad4c 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/.ratings
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/.ratings
@@ -1,2 +1,2 @@
-GraphicUtils.java 46cfc991cd3ef787fec3f95751bc680d68479e26 GREEN
+GraphicUtils.java 9373a2c7a5ebb0d87284d0f6f983348812e5b90d GREEN
 JavaFXUtils.java db3cf28289109ffec64c8f96c7b2de779a977b3b GREEN
diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/GraphicUtils.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/GraphicUtils.java
index 46cfc991cd3ef787fec3f95751bc680d68479e26..9373a2c7a5ebb0d87284d0f6f983348812e5b90d 100644
--- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/GraphicUtils.java
+++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/util/GraphicUtils.java
@@ -32,7 +32,7 @@ public class GraphicUtils {
 	private static final HashMap<String, Image> imageCache = new HashMap<>();
 
 	/** Returns the plugin-local URI string for the given resource. */
-	public static String getURIString(String pluginId, String localPath) {
+	private static String getURIString(String pluginId, String localPath) {
 		if(!pluginId.endsWith("/") && !localPath.startsWith("/")) {
 			localPath = "/" + localPath;
 		}
@@ -41,6 +41,9 @@ public class GraphicUtils {
 
 	/** Returns the Java FX Image loaded from the plugin's local path. */
 	public static Image getFXImage(String pluginId, String localPath) {
+		if(pluginId == null || localPath == null) {
+			return null;
+		}
 		String uri = getURIString(pluginId, localPath);
 		if(uri == null) {
 			return null;
diff --git a/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/.ratings b/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/.ratings
index c6edc8e2348631a76c121a42bd3455f3b828c919..f0ac7d366bbda8c7f43a6afbd2d9ea6190bbac10 100644
--- a/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/.ratings
+++ b/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/.ratings
@@ -1 +1 @@
-ToolingGraphicsGLUIActivator.java 278f2896961a12211d7b48daf6ec6e685e105dc8 GREEN
+ToolingGraphicsGLUIActivator.java d8e45ba22affcad57dc7f194004aa110f11590fc GREEN
diff --git a/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/ToolingGraphicsGLUIActivator.java b/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/ToolingGraphicsGLUIActivator.java
index 278f2896961a12211d7b48daf6ec6e685e105dc8..d8e45ba22affcad57dc7f194004aa110f11590fc 100644
--- a/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/ToolingGraphicsGLUIActivator.java
+++ b/org.fortiss.tooling.graphicsGL.ui/src/org/fortiss/tooling/graphicsGL/ui/ToolingGraphicsGLUIActivator.java
@@ -17,6 +17,7 @@ package org.fortiss.tooling.graphicsGL.ui;
 
 import static java.lang.System.mapLibraryName;
 import static org.eclipse.core.runtime.FileLocator.toFileURL;
+import static org.eclipse.jface.resource.ResourceLocator.imageDescriptorFromBundle;
 import static org.fortiss.tooling.base.utils.SystemUtils.isOs64BitArch;
 
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -93,6 +94,6 @@ public class ToolingGraphicsGLUIActivator extends AbstractUIPlugin {
 
 	/** Returns the image descriptor for the given icon file. */
 	public static ImageDescriptor getImageDescriptor(String path) {
-		return imageDescriptorFromPlugin(PLUGIN_ID, path);
+		return imageDescriptorFromBundle(PLUGIN_ID, path).orElse(null);
 	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/.ratings
index fbd0cab3259f881979947837bbf444692e417ac6..e5179fafce002378ce1029a73e389de29079f4d5 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/.ratings
@@ -1,3 +1,3 @@
 ESharedImages.java dd65be1d1ee807db8460064d9b970847e6303ff0 GREEN
 ToolingKernelUI.java 250e5dde230272e286aa8d327fd597cf542774fe GREEN
-ToolingKernelUIActivator.java 1c6ac50477a78cd77d9e4daf36f423d4b4dbdf63 GREEN
+ToolingKernelUIActivator.java fc281e60592e54bd606d0b6667168afdfde8389e GREEN
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java
index 1c6ac50477a78cd77d9e4daf36f423d4b4dbdf63..fc281e60592e54bd606d0b6667168afdfde8389e 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/ToolingKernelUIActivator.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.ui;
 
+import static org.eclipse.jface.resource.ResourceLocator.imageDescriptorFromBundle;
+
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -81,7 +83,7 @@ public class ToolingKernelUIActivator extends AbstractUIPlugin {
 
 	/** Returns image descriptor of the image in the kernel plugin. */
 	public static ImageDescriptor getImageDescriptor(String iconPath) {
-		return imageDescriptorFromPlugin(PLUGIN_ID, iconPath);
+		return imageDescriptorFromBundle(PLUGIN_ID, iconPath).orElse(null);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/.ratings
index 4dfe4762a07390bd5a303f6b7d8ba7446b51e4fa..5c3dd63e4d68684cf019dbafd1692296426a68f5 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/.ratings
@@ -8,7 +8,7 @@ FXEditorBase.java 40caf638c7b4c02da5aece0d9d58883bce630e76 GREEN
 IListPropertySection.java 8bb00fe7959583e794ff9437b7a77404c9a9e70f GREEN
 LWFXEFEditorBase.java f6b160b700a0287021402b5702beb2bfdce3dc2e GREEN
 ModelEditorBindingBase.java b9b1a1c5a48a6e677d1f57ad55a6126d9703c4b5 GREEN
-ModelElementHandlerBase.java d08583ffdf78938a14caeb46124eda4ce5cac3e4 GREEN
+ModelElementHandlerBase.java d0efc1e9ca2fbbefb861f1ae8176ad9ec08a08a8 GREEN
 MultiEObjectActionBase.java 9e237d8ea640c4194e4877af4a9cfce88698e543 GREEN
 NamedCommentedModelElementHandlerBase.java 681b98b50b362f01abb7a36f108f4f11b9e51829 GREEN
 PropertySectionBase.java 20fb1daea544123ea941743aafeb9ac59daf5356 GREEN
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
index d08583ffdf78938a14caeb46124eda4ce5cac3e4..d0efc1e9ca2fbbefb861f1ae8176ad9ec08a08a8 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
@@ -16,7 +16,10 @@
 package org.fortiss.tooling.kernel.ui.extension.base;
 
 import static java.util.Collections.emptyList;
+import static org.eclipse.jface.resource.ResourceLocator.imageDescriptorFromBundle;
 import static org.fortiss.tooling.common.ui.javafx.util.GraphicUtils.getFXImageFromURI;
+import static org.fortiss.tooling.kernel.utils.LoggingUtils.warning;
+import static org.fortiss.tooling.kernel.utils.ResourceUtils.getResourceURI;
 
 import java.util.HashMap;
 import java.util.List;
@@ -27,6 +30,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.DecorationOverlayIcon;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
+import org.fortiss.tooling.kernel.ui.ToolingKernelUIActivator;
 import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
 
 import javafx.scene.Node;
@@ -34,10 +38,12 @@ import javafx.scene.image.ImageView;
 
 /**
  * Base implementation for {@link IModelElementHandler}s.
- * 
- * Sub-classes must implement {@link #getIconImageDescriptor()} and may override
- * the other non-final methods of {@link IModelElementHandler}. By default the base
- * implementation returns empty lists for the respective methods. Open editor
+ * <br>
+ * {@link ModelEditorBindingBase} retrieves model element icons from file resources in the plugins.
+ * Sub-classes must implement {@link #getPluginId()} and {@link #getIconPath(EObject)} and may
+ * override the other non-final methods of {@link IModelElementHandler}.
+ * <br>
+ * By default the base implementation returns empty lists for the respective methods. Open editor
  * requests are handled by returning the model element itself.
  * 
  * @author hoelzl
@@ -53,6 +59,33 @@ public abstract class ModelElementHandlerBase<T extends EObject>
 		return "";
 	}
 
+	/**
+	 * Returns the ID of the plugin used by this model element handler to provide icons for model
+	 * elements.
+	 */
+	protected abstract String getPluginId();
+
+	/** Returns the plugin-relative path of the icon to be displayed for the given element. */
+	protected abstract String getIconPath(T element);
+
+	/** {@inheritDoc} */
+	@Override
+	public final ImageDescriptor getIconImageDescriptor(T element) {
+		String pluginId = getPluginId();
+		String iconPath = getIconPath(element);
+		if(pluginId == null || iconPath == null) {
+			String elementTypeName =
+					element != null ? element.getClass().getCanonicalName() : "<null>";
+			String pluginIdName = pluginId != null ? pluginId : "<null>";
+			String iconPathName = iconPath != null ? iconPath : "<null>";
+			warning(ToolingKernelUIActivator.getDefault(),
+					"Failed to load icon for " + elementTypeName + ". Plugin ID: " + pluginIdName +
+							", icon path: " + iconPathName);
+			return null;
+		}
+		return imageDescriptorFromBundle(pluginId, iconPath).orElse(null);
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	public final Image getIcon(T element) {
@@ -79,37 +112,31 @@ public abstract class ModelElementHandlerBase<T extends EObject>
 		return iconImage;
 	}
 
-	/**
-	 * Returns the URL to the JavaFX icon image.
-	 * 
-	 * @param element
-	 *            the model element
-	 * @return the URL of the icon
-	 */
-	protected String getFXIconURL(T element) {
-		return "platform:/plugin/org.fortiss.tooling.kernel.ui/icons/fix.png";
-	}
-
 	/** {@inheritDoc} */
 	@Override
-	public Node getFXIcon(T element) {
-		String uri = getFXIconURL(element);
+	public final Node getFXIcon(T element) {
+		String uri;
+		String pluginId = getPluginId();
+		String iconPath = getIconPath(element);
+		try {
+			uri = getResourceURI(pluginId, iconPath);
+		} catch(Exception e) {
+			uri = null;
+		}
 		if(uri == null) {
+			String elementTypeName =
+					element != null ? element.getClass().getCanonicalName() : "<null>";
+			String pluginIdName = pluginId != null ? pluginId : "<null>";
+			String iconPathName = iconPath != null ? iconPath : "<null>";
+			warning(ToolingKernelUIActivator.getDefault(),
+					"Failed to load FX icon for " + elementTypeName + ". Plugin ID: " +
+							pluginIdName + ", icon path: " + iconPathName);
 			return null;
 		}
 		javafx.scene.image.Image img = getFXImageFromURI(uri);
 		return new ImageView(img);
 	}
 
-	/** The default implementation forwards the request by ignoring the model element. */
-	@Override
-	public ImageDescriptor getIconImageDescriptor(T element) {
-		return getIconImageDescriptor();
-	}
-
-	/** Get image descriptor by ignoring the model element. */
-	public abstract ImageDescriptor getIconImageDescriptor();
-
 	/** {@inheritDoc} */
 	@Override
 	public List<EObject> getSubnodes(T element) {
diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings
index 87159f5430ed08dd71e893efd81e7542dab16d2a..4e2a8782dcd01a1927efbb33ae2411f72c1ee545 100644
--- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings
+++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/.ratings
@@ -10,6 +10,6 @@ KernelModelElementUtils.java fded09befe7e543fc04ea5184ffc1c8a309d7a66 GREEN
 KernelServiceBasedModelListenerBase.java 8d916509ae75f7118ce72564ee715c46556fb709 GREEN
 LoggingUtils.java 0e0aa5d466d80ea29cfc7e91178b23a5cdd4ddf7 GREEN
 PrototypesUtils.java ec75bed75cfc5103f1f38e3a29df86f729428775 GREEN
-ResourceUtils.java 7f4941a83115dfbed75eb58b79c0a372fe1cbb94 GREEN
+ResourceUtils.java 1388e642ceeead4c8852e7ae39c6d57a362d4845 GREEN
 TransformationUtils.java 552d3a9d56d34450be781af828efe0b8aa5d359e GREEN
 UniqueIDUtils.java 665955b1790c1bd1c2087e23114da920bfec2265 GREEN
diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/ResourceUtils.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/ResourceUtils.java
index 7f4941a83115dfbed75eb58b79c0a372fe1cbb94..1388e642ceeead4c8852e7ae39c6d57a362d4845 100644
--- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/ResourceUtils.java
+++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/ResourceUtils.java
@@ -240,22 +240,23 @@ public final class ResourceUtils {
 	 * 
 	 * @param pluginId
 	 *            The plugin ID
-	 * @param absPath
+	 * @param path
 	 *            The absolute path in the plugin
 	 * @return a resource URI
 	 */
-	public static String getResourceURI(String pluginId, String absPath) {
+	public static String getResourceURI(String pluginId, String path) {
 		if(pluginId == null) {
 			throw new NullPointerException("The plugin ID must not be null!");
 		}
-		if(absPath == null) {
+		if(path == null) {
 			throw new NullPointerException("The path must not be null!");
 		}
-		if(!absPath.startsWith("/")) {
-			throw new IllegalArgumentException("The path is not a absolute path.");
+
+		if(!pluginId.endsWith("/") && !path.startsWith("/")) {
+			path = "/" + path;
 		}
 
-		return "platform:/plugin/" + pluginId + absPath;
+		return "platform:/plugin/" + pluginId + path;
 	}
 
 	/**