Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 17572)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 17573)
@@ -35,4 +35,5 @@
 import java.util.Objects;
 import java.util.Set;
+import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -185,5 +186,7 @@
         public String getText() {
             StringBuilder b = new StringBuilder();
-            for (Entry<Object, Object> e : info.attr.entrySet()) {
+            Map<Object, Object> sorted = new TreeMap<>(Comparator.comparing(String::valueOf));
+            sorted.putAll(info.attr);
+            for (Entry<Object, Object> e : sorted.entrySet()) {
                 b.append(e.getKey());
                 b.append(": ");
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 17572)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 17573)
@@ -150,4 +150,5 @@
      */
     public PluginInformation(InputStream manifestStream, String name, String url) throws PluginException {
+        this.name = name;
         try {
             Manifest manifest = new Manifest();
Index: /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java	(revision 17572)
+++ /trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java	(revision 17573)
@@ -154,16 +154,16 @@
     void testPluginInformationAction() throws PluginException {
         TestUtils.assumeWorkingJMockit();
-        final String expectedText = "Manifest-Version: 1.0\n" +
-                "Ant-Version: Apache Ant 1.9.6\n" +
+        final String expectedText = "Ant-Version: Apache Ant 1.9.6\n" +
+                "Author: Don-vip\n" +
                 "Created-By: 1.7.0_91-b02 (Oracle Corporation)\n" +
+                "Manifest-Version: 1.0\n" +
+                "Plugin-Canloadatruntime: true\n" +
+                "Plugin-Class: org.openstreetmap.josm.plugins.fr.epci.EpciPlugin\n" +
+                "Plugin-Date: 2015-11-19T08:21:07.645033Z\n" +
+                "Plugin-Description: Handling of French EPCIs (boundary=local_authority)\n" +
+                "Plugin-Early: true\n" +
+                "Plugin-Link: http://wiki.openstreetmap.org/wiki/FR:JOSM/Fr:Plugin/EPCI-fr\n" +
                 "Plugin-Mainversion: 7001\n" +
-                "Plugin-Version: 31772\n" +
-                "Plugin-Class: org.openstreetmap.josm.plugins.fr.epci.EpciPlugin\n" +
-                "Plugin-Description: Handling of French EPCIs (boundary=local_authority)\n" +
-                "Plugin-Date: 2015-11-19T08:21:07.645033Z\n" +
-                "Author: Don-vip\n" +
-                "Plugin-Link: http://wiki.openstreetmap.org/wiki/FR:JOSM/Fr:Plugin/EPCI-fr\n" +
-                "Plugin-Early: true\n" +
-                "Plugin-Canloadatruntime: true\n";
+                "Plugin-Version: 31772\n";
         final JOptionPaneSimpleMocker jopsMocker = new JOptionPaneSimpleMocker() {
             @Override
