Index: applications/editors/josm/plugins/CommandLine/src/CommandLine/CommandLine.java
===================================================================
--- applications/editors/josm/plugins/CommandLine/src/CommandLine/CommandLine.java	(revision 30671)
+++ applications/editors/josm/plugins/CommandLine/src/CommandLine/CommandLine.java	(revision 30677)
@@ -30,4 +30,5 @@
 import java.awt.event.MouseEvent;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -35,9 +36,14 @@
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
 import javax.swing.JMenu;
+import javax.swing.JOptionPane;
 import javax.swing.JTextField;
 import javax.swing.JToolBar;
@@ -247,6 +253,57 @@
     private void loadCommands() {
         commands = (new Loader(getPluginDir())).load();
+        if (commands.isEmpty()) {
+            if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(Main.parent,
+                    tr("No command has been found. Would you like to download and install default commands now?"),
+                    tr("No command found"), JOptionPane.YES_NO_CANCEL_OPTION)) {
+                try {
+                    downloadAndInstallDefaultCommands();
+                    commands = (new Loader(getPluginDir())).load();
+                    JOptionPane.showMessageDialog(Main.parent, tr("Default commands have been successfully installed"),
+                            tr("Success"), JOptionPane.INFORMATION_MESSAGE);
+                } catch (IOException e) {
+                    Main.warn(e);
+                    JOptionPane.showMessageDialog(Main.parent,
+                            tr("Failed to download and install default commands.\n\nError: {0}", e.getMessage()),
+                            tr("Warning"), JOptionPane.WARNING_MESSAGE);
+                }
+            }
+        }
         for (Command command : commands) {
             commandMenu.add(new CommandAction(command, this));
+        }
+    }
+
+    private void downloadAndInstallDefaultCommands() throws IOException {
+        String url = Main.pref.get("commandline.default.commands.url",
+                "https://github.com/Foxhind/JOSM-CommandLine-commands/archive/master.zip");
+        try (ZipInputStream zis = new ZipInputStream(Utils.openURL(new URL(url)), StandardCharsets.UTF_8)) {
+            File dir = new File(getPluginDir());
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+            ZipEntry entry = null;
+            while ( (entry = zis.getNextEntry()) != null ) {
+                if (!entry.isDirectory()) {
+                    String name = entry.getName();
+                    if (name.contains("/")) {
+                        name = name.substring(name.lastIndexOf("/"));
+                    }
+                    File file = new File(dir + File.separator + name);
+                    Main.info("Installing command file: "+file);
+                    if (!file.createNewFile()) {
+                        throw new IOException("Could not create file: " + file.getAbsolutePath());
+                    }
+                    // Write file
+                    try (FileOutputStream fos = new FileOutputStream(file)) {
+                        Utils.copyStream(zis, fos);
+                    }
+                    // Set last modification date
+                    long time = entry.getTime();
+                    if (time > -1) {
+                        file.setLastModified(time);
+                    }
+                }
+            }
         }
     }
Index: applications/editors/josm/plugins/CommandLine/src/CommandLine/Loader.java
===================================================================
--- applications/editors/josm/plugins/CommandLine/src/CommandLine/Loader.java	(revision 30671)
+++ applications/editors/josm/plugins/CommandLine/src/CommandLine/Loader.java	(revision 30677)
@@ -37,19 +37,18 @@
         try {
             // Creating parser
-            SAXParserFactory spf = SAXParserFactory.newInstance();
-            SAXParser sp = spf.newSAXParser();
+            SAXParser sp = SAXParserFactory.newInstance().newSAXParser();
 
             // Files loading
-            File path = new File(dirToScan + "/");
-            String[] list;
-            list = path.list();
-            for(int i = 0; i < list.length; i++)
-                if (list[i].endsWith(".xml")) {
-                    currentFile = dirToScan + "/" + list[i];
-                    loadFile(sp, currentFile);
+            String[] list = new File(dirToScan + "/").list();
+            if (list != null) {
+                for (int i = 0; i < list.length; i++) {
+                    if (list[i].endsWith(".xml")) {
+                        currentFile = dirToScan + "/" + list[i];
+                        loadFile(sp, currentFile);
+                    }
                 }
-        }
-        catch (Exception e) {
-            System.err.println(e);
+            }
+        } catch (Exception e) {
+            Main.error(e);
         }
         return loadingCommands;
@@ -61,6 +60,5 @@
             Main.info(a);
             parser.parse(a, this);
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
             Main.error(e);
         }
@@ -129,6 +127,5 @@
 
     @Override
-    public void characters(char ch[], int start, int length)
-    {
+    public void characters(char ch[], int start, int length) {
         String text = (new String(ch, start, length)).trim();
         if (currentParameter != null) {
@@ -172,15 +169,15 @@
     @Override
     public void warning(SAXParseException ex) {
-        System.err.println("Warning in command xml file " + currentFile + ": " + ex.getMessage());
+        Main.warn("Warning in command xml file " + currentFile + ": " + ex.getMessage());
     }
 
     @Override
     public void error(SAXParseException ex) {
-        System.err.println("Error in command xml file " + currentFile + ": " + ex.getMessage());
+        Main.error("Error in command xml file " + currentFile + ": " + ex.getMessage());
     }
 
     @Override
     public void fatalError(SAXParseException ex) throws SAXException {
-        System.err.println("Error in command xml file " + currentFile + ": " + ex.getMessage());
+        Main.error("Error in command xml file " + currentFile + ": " + ex.getMessage());
         throw ex;
     }
