Index: trunk/src/org/openstreetmap/josm/plugins/Plugin.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/Plugin.java	(revision 5986)
+++ trunk/src/org/openstreetmap/josm/plugins/Plugin.java	(revision 5987)
@@ -113,4 +113,7 @@
             out = new FileOutputStream(new File(pluginDirName, to));
             in = getClass().getResourceAsStream(from);
+            if (in == null) {
+                throw new IOException("Resource not found: "+from);
+            }
             byte[] buffer = new byte[8192];
             for(int len = in.read(buffer); len > 0; len = in.read(buffer)) {
Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 5986)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 5987)
@@ -424,6 +424,12 @@
             return false;
         }
-
-        return checkRequiredPluginsPreconditions(parent, plugins, plugin, true);
+        
+        // Add all plugins already loaded (to include early plugins when checking late ones)
+        Collection<PluginInformation> allPlugins = new HashSet<PluginInformation>(plugins);
+        for (PluginProxy proxy : pluginList) {
+            allPlugins.add(proxy.getPluginInformation());
+        }
+
+        return checkRequiredPluginsPreconditions(parent, allPlugins, plugin, true);
     }
 
@@ -513,10 +519,14 @@
             msg = null;
         } catch (PluginException e) {
-            System.err.print(e.getMessage());
+            System.err.println(e.getMessage());
             Throwable cause = e.getCause();
             if (cause != null) {
-                System.err.print(". " + cause.getClass().getName() + ": " + cause.getLocalizedMessage());
-            }
-            System.err.println();
+                msg = cause.getLocalizedMessage();
+                if (msg != null) {
+                    System.err.println("Cause: " + cause.getClass().getName()+": " + msg);
+                } else {
+                    cause.printStackTrace();
+                }
+            }
             if (e.getCause() instanceof ClassNotFoundException) {
                 msg = tr("<html>Could not load plugin {0} because the plugin<br>main class ''{1}'' was not found.<br>"
