Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 8945)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 8947)
@@ -10,4 +10,5 @@
 import java.awt.Dimension;
 import java.awt.FlowLayout;
+import java.awt.GraphicsEnvironment;
 import java.awt.event.ActionEvent;
 import java.awt.event.HierarchyBoundsListener;
@@ -494,29 +495,32 @@
         }
 
-        // Build conflict resolution dialog
-        final CombinePrimitiveResolverDialog dialog = CombinePrimitiveResolverDialog.getInstance();
-
-        dialog.getTagConflictResolverModel().populate(tagsToEdit, completeWayTags.getKeysWithMultipleValues());
-        dialog.getRelationMemberConflictResolverModel().populate(parentRelations, primitives);
-        dialog.prepareDefaultDecisions();
-
-        // Ensure a proper title is displayed instead of a previous target (fix #7925)
-        if (targetPrimitives.size() == 1) {
-            dialog.setTargetPrimitive(targetPrimitives.iterator().next());
-        } else {
-            dialog.setTargetPrimitive(null);
-        }
-
-        // Resolve tag conflicts if necessary
-        if (!dialog.isResolvedCompletely()) {
-            dialog.setVisible(true);
-            if (dialog.isCanceled()) {
-                throw new UserCancelException();
-            }
-        }
         List<Command> cmds = new LinkedList<>();
-        for (OsmPrimitive i : targetPrimitives) {
-            dialog.setTargetPrimitive(i);
-            cmds.addAll(dialog.buildResolutionCommands());
+
+        if (!GraphicsEnvironment.isHeadless()) {
+            // Build conflict resolution dialog
+            final CombinePrimitiveResolverDialog dialog = CombinePrimitiveResolverDialog.getInstance();
+
+            dialog.getTagConflictResolverModel().populate(tagsToEdit, completeWayTags.getKeysWithMultipleValues());
+            dialog.getRelationMemberConflictResolverModel().populate(parentRelations, primitives);
+            dialog.prepareDefaultDecisions();
+
+            // Ensure a proper title is displayed instead of a previous target (fix #7925)
+            if (targetPrimitives.size() == 1) {
+                dialog.setTargetPrimitive(targetPrimitives.iterator().next());
+            } else {
+                dialog.setTargetPrimitive(null);
+            }
+
+            // Resolve tag conflicts if necessary
+            if (!dialog.isResolvedCompletely()) {
+                dialog.setVisible(true);
+                if (dialog.isCanceled()) {
+                    throw new UserCancelException();
+                }
+            }
+            for (OsmPrimitive i : targetPrimitives) {
+                dialog.setTargetPrimitive(i);
+                cmds.addAll(dialog.buildResolutionCommands());
+            }
         }
         return cmds;
