diff -r a561014c28d0 -r 2c43b89b1679 src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppImageBuilder.java --- a/src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppImageBuilder.java Tue Oct 15 14:00:04 2019 -0400 +++ b/src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppImageBuilder.java Wed Oct 16 09:57:23 2019 -0400 @@ -30,13 +30,11 @@ import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.StandardCopyOption; import java.text.MessageFormat; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; -import java.util.ResourceBundle; +import static jdk.jpackage.internal.OverridableResource.createResource; import static jdk.jpackage.internal.StandardBundlerParam.*; @@ -170,19 +168,13 @@ private void copyIcon(Map params) throws IOException { - File icon = ICON_PNG.fetchFrom(params); - File iconTarget = appLayout.destktopIntegrationDirectory().resolve( - APP_NAME.fetchFrom(params) + ".png").toFile(); + Path iconTarget = appLayout.destktopIntegrationDirectory().resolve( + APP_NAME.fetchFrom(params) + ".png"); - InputStream in = locateResource( - iconTarget.getName(), - "icon", - DEFAULT_ICON, - icon, - VERBOSE.fetchFrom(params), - RESOURCE_DIR.fetchFrom(params)); - - Files.copy(in, iconTarget.toPath(), StandardCopyOption.REPLACE_EXISTING); + createResource(DEFAULT_ICON, params) + .setCategory("icon") + .setExternal(ICON_PNG.fetchFrom(params)) + .saveToFile(iconTarget); } private void copyApplication(Map params)