--- old/src/jdk.jpackage/share/classes/jdk/jpackage/internal/AddLauncherArguments.java 2019-03-08 15:28:23.624873100 -0500 +++ new/src/jdk.jpackage/share/classes/jdk/jpackage/internal/AddLauncherArguments.java 2019-03-08 15:28:22.657660700 -0500 @@ -164,4 +164,22 @@ params.put(param, value); } } + + static Map merge( + Map original, + Map additional) { + Map tmp = new HashMap<>(original); + if (additional.containsKey("module")) { + tmp.remove("main-jar"); + tmp.remove("main-class"); + } else if (additional.containsKey("main-jar")) { + tmp.remove("module"); + // should we only remove add-modules when it wasn't actually passed + // but was inferred or empty ? + tmp.remove("add-modules"); + } + tmp.putAll(additional); + return tmp; + } + }