Index: applications/editors/josm/plugins/ext_tools/build.xml
===================================================================
--- applications/editors/josm/plugins/ext_tools/build.xml	(revision 23325)
+++ applications/editors/josm/plugins/ext_tools/build.xml	(revision 23327)
@@ -31,5 +31,5 @@
 
 	<!-- enter the SVN commit message -->
-	<property name="commit.message" value="show stderr contents in debug window" />
+	<property name="commit.message" value="show error if script cannot be executed" />
 	<!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
 	<property name="plugin.main.version" value="3403" />
Index: applications/editors/josm/plugins/ext_tools/src/ext_tools/ExtTool.java
===================================================================
--- applications/editors/josm/plugins/ext_tools/src/ext_tools/ExtTool.java	(revision 23325)
+++ applications/editors/josm/plugins/ext_tools/src/ext_tools/ExtTool.java	(revision 23327)
@@ -117,5 +117,5 @@
 
     protected void showErrorMessage(String message, String details) {
-        JPanel p = new JPanel(new GridBagLayout());
+        final JPanel p = new JPanel(new GridBagLayout());
         p.add(new JMultilineLabel(message),GBC.eol());
         if (details != null) {
@@ -125,5 +125,9 @@
             p.add(new JScrollPane(info), GBC.eop());
         }
-        JOptionPane.showMessageDialog(Main.parent, p, tr("External tool error"), JOptionPane.ERROR_MESSAGE);
+        SwingUtilities.invokeLater(new Runnable() {
+            public void run() {
+                JOptionPane.showMessageDialog(Main.parent, p, tr("External tool error"), JOptionPane.ERROR_MESSAGE);
+            }
+        });
     }
 
@@ -167,5 +171,11 @@
         try {
             tp.process = builder.start();
-        } catch (IOException e1) {
+        } catch (final IOException e) {
+            e.printStackTrace();
+            synchronized (debugstr) {
+                showErrorMessage(
+                        tr("Error executing the script:"),
+                        debugstr.toString() + e.getMessage() + "\n" + e.getStackTrace());
+            }
             return;
         }
@@ -207,13 +217,9 @@
                     if (tp.running) {
                         tp.process.destroy();
-                        SwingUtilities.invokeLater(new Runnable() {
-                            public void run() {
-                                synchronized (debugstr) {
-                                    showErrorMessage(
-                                            tr("Child script have returned invalid data.\n\nstderr contents:"),
-                                            debugstr.toString());
-                                }
-                            }
-                        });
+                        synchronized (debugstr) {
+                            showErrorMessage(
+                                    tr("Child script have returned invalid data.\n\nstderr contents:"),
+                                    debugstr.toString());
+                        }
                     }
                 } finally {
