Index: trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 2863)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 2864)
@@ -15,4 +15,5 @@
 import java.awt.event.ComponentEvent;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -255,5 +256,7 @@
             return false;
         if (model.isActivePluginsChanged()) {
-            Main.pref.putCollection("plugins", model.getSelectedPluginNames());
+            LinkedList<String> l = new LinkedList<String>(model.getSelectedPluginNames());
+            Collections.sort(l);
+            Main.pref.putCollection("plugins", l);
             return true;
         }
Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 2863)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 2864)
@@ -367,5 +367,11 @@
         try {
             monitor.beginTask(tr("Loading plugins ..."));
+            monitor.subTask(tr("Checking plugin preconditions..."));
             List<PluginInformation> toLoad = new LinkedList<PluginInformation>();
+            for (PluginInformation pi: plugins) {
+                if (checkLoadPreconditions(parent, plugins, pi)) {
+                    toLoad.add(pi);
+                }
+            }
             // sort the plugins according to their "staging" equivalence class. The
             // lower the value of "stage" the earlier the plugin should be loaded.
@@ -381,10 +387,4 @@
                     }
             );
-            monitor.subTask(tr("Checking plugin preconditions..."));
-            for (PluginInformation pi: plugins) {
-                if (checkLoadPreconditions(parent, plugins, pi)) {
-                    toLoad.add(pi);
-                }
-            }
             if (toLoad.isEmpty())
                 return;
