# HG changeset patch # User herrick # Date 1539798611 14400 # Node ID e094d5483bd65f5901629e2d1e8ae015a526a50b # Parent eaca4369b0686aca7223907b68aa9a447efdff31 8212048: Cleanup source code and fix issues discussed in preliminary review Reviewed-by: almatvee diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java --- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java Wed Oct 17 13:50:11 2018 -0400 @@ -50,11 +50,11 @@ class SingleInstanceImpl { static final String SI_FILEDIR = getTmpDir() + File.separator - + "si" + File.separator; - static final String SI_MAGICWORD = "javapackager.singleinstance.init"; - static final String SI_ACK = "javapackager.singleinstance.ack"; - static final String SI_STOP = "javapackager.singleinstance.stop"; - static final String SI_EOF = "javapackager.singleinstance.EOF"; + + "si" + File.separator; + static final String SI_MAGICWORD = "jpackager.singleinstance.init"; + static final String SI_ACK = "jpackager.singleinstance.ack"; + static final String SI_STOP = "jpackager.singleinstance.stop"; + static final String SI_EOF = "jpackager.singleinstance.EOF"; private final ArrayList siListeners = new ArrayList<>(); @@ -118,7 +118,6 @@ siListeners.add(sil); } } - } class SingleInstanceServer { diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java --- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java Wed Oct 17 13:50:11 2018 -0400 @@ -29,7 +29,7 @@ * The {@code SingleInstanceListener} interface is used for implementing * Single Instance functionality for Java Packager. * - * @since 10 + * @since 12 */ public interface SingleInstanceListener { diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java --- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java Wed Oct 17 13:50:11 2018 -0400 @@ -27,7 +27,7 @@ import java.util.Arrays; -// This class is used for notifying Single Instance for Java Packager. +// This class is used for notifying Single Instance for JPackager. public class SingleInstanceNewActivation { diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java --- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java Wed Oct 17 13:50:11 2018 -0400 @@ -38,9 +38,9 @@ /** * The {@code SingleInstanceService} class provides public methods for using * Single Instance functionality for Java Packager. To use these methods, - * the option named "-singleton" must be specified on javapackager command line. + * the option named "-singleton" must be specified on jpackager command line. * - * @since 10 + * @since 12 */ public class SingleInstanceService { @@ -59,7 +59,7 @@ static final String ENCODING_PLATFORM_NAME = "UTF-8"; static final String ENCODING_UNICODE_NAME = "UTF-16LE"; - static final String APP_ID_PREFIX = "javapackager.si."; + static final String APP_ID_PREFIX = "jpackager.si."; private SingleInstanceService() {} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager.services/share/classes/module-info.java --- a/src/jdk.packager.services/share/classes/module-info.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager.services/share/classes/module-info.java Wed Oct 17 13:50:11 2018 -0400 @@ -27,7 +27,7 @@ * Defines the services used by the jpackager tool. * * @moduleGraph - * @since 11 + * @since 12 */ module jdk.packager.services { exports jdk.packager.services.singleton; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java --- a/src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,6 @@ package jdk.packager.internal.builders.linux; - import jdk.packager.internal.BundlerParamInfo; import jdk.packager.internal.IOUtils; import jdk.packager.internal.Log; @@ -164,7 +163,7 @@ } - //it is static for the sake of sharing with "installer" bundlers + // it is static for the sake of sharing with "installer" bundlers // that may skip calls to validate/bundle in this class! public static File getRootDir(File outDir, Map p) { return new File(outDir, APP_FS_NAME.fetchFrom(p)); @@ -248,12 +247,8 @@ } private void copyApplication() throws IOException { - List appResourcesList = - APP_RESOURCES_LIST.fetchFrom(params); - if (appResourcesList == null) { - throw new RuntimeException("Null app resources?"); - } - for (RelativeFileSet appResources : appResourcesList) { + for (RelativeFileSet appResources : + APP_RESOURCES_LIST.fetchFrom(params)) { if (appResources == null) { throw new RuntimeException("Null app resources?"); } @@ -264,9 +259,4 @@ } } - @Override - protected String getCacheLocation(Map params) { - return "$CACHEDIR/"; - } - } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java --- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -40,8 +40,8 @@ import jdk.packager.internal.bundlers.BundleParams; import jdk.packager.internal.builders.linux.LinuxAppImageBuilder; import jdk.packager.internal.resources.linux.LinuxResources; - import jdk.packager.internal.JLinkBundlerHelper; +import jdk.packager.internal.builders.AbstractAppImageBuilder; import java.io.File; import java.io.IOException; @@ -54,13 +54,11 @@ import java.util.ResourceBundle; import static jdk.packager.internal.StandardBundlerParam.*; -import jdk.packager.internal.builders.AbstractAppImageBuilder; public class LinuxAppBundler extends AbstractImageBundler { - private static final ResourceBundle I18N = - ResourceBundle.getBundle( - "jdk.packager.internal.resources.linux.LinuxAppBundler"); + private static final ResourceBundle I18N = ResourceBundle.getBundle( + "jdk.packager.internal.resources.linux.LinuxAppBundler"); protected static final String LINUX_BUNDLER_PREFIX = BUNDLER_PREFIX + "linux" + File.separator; @@ -83,58 +81,6 @@ }, (s, p) -> new File(s)); - public static final BundlerParamInfo RAW_EXECUTABLE_URL = - new StandardBundlerParam<>( - I18N.getString("param.raw-executable-url.name"), - I18N.getString("param.raw-executable-url.description"), - "linux.launcher.url", - URL.class, - params -> LinuxResources.class.getResource(EXECUTABLE_NAME), - (s, p) -> { - try { - return new URL(s); - } catch (MalformedURLException e) { - Log.info(e.toString()); - return null; - } - }); - - //Subsetting of JRE is restricted. - //JRE README defines what is allowed to strip: - // http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html - // - public static final BundlerParamInfo LINUX_JRE_RULES = - new StandardBundlerParam<>( - "", - "", - ".linux.runtime.rules", - Rule[].class, - params -> new Rule[]{ - Rule.prefixNeg("/bin"), - Rule.prefixNeg("/plugin"), - //Rule.prefixNeg("/lib/ext"), - //need some of jars there for https to work - Rule.suffix("deploy.jar"), //take deploy.jar - Rule.prefixNeg("/lib/deploy"), - Rule.prefixNeg("/lib/desktop"), - Rule.substrNeg("libnpjp2.so") - }, - (s, p) -> null - ); - - public static final BundlerParamInfo LINUX_RUNTIME = - new StandardBundlerParam<>( - I18N.getString("param.runtime.name"), - I18N.getString("param.runtime.description"), - BundleParams.PARAM_RUNTIME, - RelativeFileSet.class, - params -> JreUtils.extractJreAsRelativeFileSet( - System.getProperty("java.home"), - LINUX_JRE_RULES.fetchFrom(params)), - (s, p) -> JreUtils.extractJreAsRelativeFileSet(s, - LINUX_JRE_RULES.fetchFrom(p)) - ); - public static final BundlerParamInfo LINUX_INSTALL_DIR = new StandardBundlerParam<>( I18N.getString("param.linux-install-dir.name"), @@ -196,7 +142,7 @@ return true; } - //it is static for the sake of sharing with "installer" bundlers + // it is static for the sake of sharing with "installer" bundlers // that may skip calls to validate/bundle in this class! public static File getRootDir(File outDir, Map p) { return new File(outDir, APP_FS_NAME.fetchFrom(p)); @@ -228,10 +174,6 @@ return predefined; } return rootDirectory; - } catch (IOException ex) { - Log.info("Exception: "+ex); - Log.debug(ex); - return null; } catch (Exception ex) { Log.info("Exception: "+ex); Log.debug(ex); @@ -251,10 +193,6 @@ StandardBundlerParam.copyPredefinedRuntimeImage(p, appBuilder); } return rootDirectory; - } catch (IOException ex) { - Log.info("Exception: "+ex); - Log.debug(ex); - return null; } catch (Exception ex) { Log.info("Exception: "+ex); Log.debug(ex); @@ -327,11 +265,9 @@ CLASSPATH, JVM_OPTIONS, JVM_PROPERTIES, - LINUX_RUNTIME, MAIN_CLASS, MAIN_JAR, PREFERENCES_ID, - PRELOADER_CLASS, VERSION, VERBOSE ); @@ -345,8 +281,6 @@ @Override public boolean supported() { - // TODO: check that it really works on Solaris (in case we need it) - return (Platform.getPlatform() == Platform.LINUX) || - (Platform.getPlatform() == Platform.SOLARIS); + return (Platform.getPlatform() == Platform.LINUX); } } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java --- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -66,8 +66,8 @@ // Debian rules for package naming are used here // https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source // - // Package names must consist only of lower case letters (a-z), digits (0-9), - // plus (+) and minus (-) signs, and periods (.). + // Package names must consist only of lower case letters (a-z), + // digits (0-9), plus (+) and minus (-) signs, and periods (.). // They must be at least two characters long and // must start with an alphanumeric character. // @@ -191,9 +191,9 @@ for (RelativeFileSet rfs : APP_RESOURCES_LIST.fetchFrom(params)) { if (rfs.contains(licFileStr)) { - return new String(IOUtils.readFully( + return new String(Files.readAllBytes(( new File(rfs.getBaseDirectory(), - licFileStr))); + licFileStr)).toPath())); } } } @@ -378,7 +378,7 @@ outdir.getAbsolutePath())); } - //we want to create following structure + // we want to create following structure // // DEBIAN // control (file with main package details) @@ -431,7 +431,7 @@ /* * set permissions with a string like "rwxr-xr-x" * - * This cannot be directly backport to 22u which is unfortunately built with 1.6 + * This cannot be directly backport to 22u which is built with 1.6 */ private void setPermissions(File file, String permissions) { Set filePermissions = @@ -550,7 +550,7 @@ File iconTarget = getConfig_IconFile(rootDir, params); File icon = ICON_PNG.fetchFrom(params); if (!Arguments.CREATE_JRE_INSTALLER.fetchFrom(params)) { - // prepare installer icon + // prepare installer icon if (icon == null || !icon.exists()) { fetchResource(LinuxAppBundler.LINUX_BUNDLER_PREFIX + iconTarget.getName(), @@ -598,7 +598,7 @@ w.close(); } - //prepare installer icon + // prepare installer icon iconTarget = getConfig_IconFile(rootDir, secondaryLauncher); icon = ICON_PNG.fetchFrom(secondaryLauncher); if (icon == null || !icon.exists()) { @@ -619,7 +619,7 @@ DROP_IN_RESOURCES_ROOT.fetchFrom(params)); } - //postinst copying of desktop icon + // postinst copying of desktop icon installScripts.append( " xdg-desktop-menu install --novendor "); installScripts.append(LINUX_INSTALL_DIR.fetchFrom(params)); @@ -672,11 +672,11 @@ } String description = FA_DESCRIPTION.fetchFrom(assoc); - File faIcon = FA_ICON.fetchFrom(assoc); //TODO FA_ICON_PNG + File faIcon = FA_ICON.fetchFrom(assoc); List extensions = FA_EXTENSIONS.fetchFrom(assoc); if (extensions == null) { Log.info(I18N.getString( - "message.creating-association-with-null-extension")); + "message.creating-association-with-null-extension")); } List mimes = FA_CONTENT_TYPE.fetchFrom(assoc); @@ -752,7 +752,7 @@ .append(dashMime) .append("\n"); - //x dg-icon-resource uninstall --context mimetypes + // x dg-icon-resource uninstall --context mimetypes // --size 64 awesomeapp_fa_1.png // application-x.vnd-awesome deregistrations.append( @@ -800,7 +800,7 @@ w.write(content); w.close(); } - //prepare control file + // prepare control file Writer w = new BufferedWriter(new FileWriter( getConfig_ControlFile(params))); String content = preprocessTextResource( @@ -841,7 +841,8 @@ w.close(); setPermissions(getConfig_PrermFile(params), "rwxr-xr-x"); - w = new BufferedWriter(new FileWriter(getConfig_PostinstallFile(params))); + w = new BufferedWriter(new FileWriter( + getConfig_PostinstallFile(params))); content = preprocessTextResource( LinuxAppBundler.LINUX_BUNDLER_PREFIX + getConfig_PostinstallFile(params).getName(), @@ -964,7 +965,7 @@ outFile.getParentFile().mkdirs(); - //run dpkg + // run dpkg ProcessBuilder pb = new ProcessBuilder( "fakeroot", TOOL_DPKG, "-b", FULL_PACKAGE_NAME.fetchFrom(params), diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java --- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -144,7 +144,7 @@ if (params.containsKey(VENDOR.getID())) { vendor = VENDOR.fetchFrom(params); } else { - vendor = "javapackager"; + vendor = "jpackager"; } String appName = APP_FS_NAME.fetchFrom(params); @@ -160,7 +160,8 @@ private final static String DEFAULT_ICON = "javalogo_white_32.png"; private final static String DEFAULT_SPEC_TEMPLATE = "template.spec"; - private final static String DEFAULT_DESKTOP_FILE_TEMPLATE = "template.desktop"; + private final static String DEFAULT_DESKTOP_FILE_TEMPLATE = + "template.desktop"; public final static String TOOL_RPMBUILD = "rpmbuild"; public final static double TOOL_RPMBUILD_MIN_VERSION = 4.0d; @@ -202,8 +203,8 @@ I18N.getString("error.parameters-null"), I18N.getString("error.parameters-null.advice")); - //run basic validation to ensure requirements are met - //we are not interested in return code, only possible exception + // run basic validation to ensure requirements are met + // we are not interested in return code, only possible exception APP_BUNDLER.fetchFrom(p).doValidate(p); // validate license file, if used, exists in the proper place @@ -225,7 +226,7 @@ } } - //validate presense of required tools + // validate presense of required tools if (!testTool(TOOL_RPMBUILD, TOOL_RPMBUILD_MIN_VERSION)){ throw new ConfigException( MessageFormat.format( @@ -332,7 +333,7 @@ imageDir.getAbsolutePath())); } } catch (IOException ex) { - //noinspection ReturnInsideFinallyBlock + // noinspection ReturnInsideFinallyBlock Log.debug(ex.getMessage()); return null; } @@ -409,7 +410,7 @@ File rootDir = LinuxAppBundler.getRootDir(RPM_IMAGE_DIR.fetchFrom(params), params); - //prepare installer icon + // prepare installer icon File iconTarget = getConfig_IconFile(rootDir, params); File icon = LinuxAppBundler.ICON_PNG.fetchFrom(params); if (!Arguments.CREATE_JRE_INSTALLER.fetchFrom(params)) { @@ -442,7 +443,7 @@ data.get("APPLICATION_FS_NAME")); secondaryLauncherData.put("DESKTOP_MIMES", ""); - //prepare desktop shortcut + // prepare desktop shortcut Writer w = new BufferedWriter(new FileWriter( getConfig_DesktopShortcutFile(rootDir, secondaryLauncher))); String content = preprocessTextResource( @@ -456,7 +457,7 @@ w.write(content); w.close(); - //prepare installer icon + // prepare installer icon iconTarget = getConfig_IconFile(rootDir, secondaryLauncher); icon = LinuxAppBundler.ICON_PNG.fetchFrom(secondaryLauncher); if (icon == null || !icon.exists()) { @@ -477,7 +478,7 @@ DROP_IN_RESOURCES_ROOT.fetchFrom(params)); } - //post copying of desktop icon + // post copying of desktop icon installScripts.append("xdg-desktop-menu install --novendor "); installScripts.append(LINUX_INSTALL_DIR.fetchFrom(params)); installScripts.append("/"); @@ -487,7 +488,7 @@ "APPLICATION_LAUNCHER_FILENAME")); installScripts.append(".desktop\n"); - //preun cleanup of desktop icon + // preun cleanup of desktop icon removeScripts.append("xdg-desktop-menu uninstall --novendor "); removeScripts.append(LINUX_INSTALL_DIR.fetchFrom(params)); removeScripts.append("/"); @@ -600,7 +601,8 @@ // --size 64 awesomeapp_fa_1.png // application-x.vnd-awesome registrations.append( - "xdg-icon-resource install --context mimetypes --size ") + "xdg-icon-resource install " + + "--context mimetypes --size ") .append(size) .append(" ") .append(LINUX_INSTALL_DIR.fetchFrom(params)) @@ -616,7 +618,8 @@ // --size 64 awesomeapp_fa_1.png // application-x.vnd-awesome deregistrations.append( - "xdg-icon-resource uninstall --context mimetypes --size ") + "xdg-icon-resource uninstall " + + "--context mimetypes --size ") .append(size) .append(" ") .append(LINUX_INSTALL_DIR.fetchFrom(params)) @@ -659,7 +662,7 @@ w.close(); } - //prepare spec file + // prepare spec file Writer w = new BufferedWriter( new FileWriter(getConfig_SpecFile(params))); String content = preprocessTextResource( @@ -688,7 +691,8 @@ APP_FS_NAME.fetchFrom(params)); data.put("INSTALLATION_DIRECTORY", LINUX_INSTALL_DIR.fetchFrom(params)); data.put("XDG_PREFIX", XDG_FILE_PREFIX.fetchFrom(params)); - data.put("DEPLOY_BUNDLE_CATEGORY", CATEGORY.fetchFrom(params)); //TODO rpm categories + data.put("DEPLOY_BUNDLE_CATEGORY", CATEGORY.fetchFrom(params)); + // TODO rpm categories data.put("APPLICATION_DESCRIPTION", DESCRIPTION.fetchFrom(params)); data.put("APPLICATION_SUMMARY", TITLE.fetchFrom(params)); data.put("APPLICATION_LICENSE_TYPE", LICENSE_TYPE.fetchFrom(params)); @@ -732,13 +736,11 @@ ProcessBuilder pb = new ProcessBuilder( TOOL_RPMBUILD, "-bb", getConfig_SpecFile(params).getAbsolutePath(), -// "--define", "%__jar_repack %{nil}", -//debug: improves build time (but will require unpack to install?) "--define", "%_sourcedir " + RPM_IMAGE_DIR.fetchFrom(params).getAbsolutePath(), - //save result to output dir + // save result to output dir "--define", "%_rpmdir " + outdir.getAbsolutePath(), - //do not use other system directories to build as current user + // do not use other system directories to build as current user "--define", "%_topdir " + broot.getAbsolutePath() ); pb = pb.directory(RPM_IMAGE_DIR.fetchFrom(params)); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,28 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + param.icon-png.name=.png Icon param.icon-png.description=Icon for the application, in PNG format. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.icon-png.name=.png\u30A2\u30A4\u30B3\u30F3 param.icon-png.description=PNG\u5F62\u5F0F\u3067\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.icon-png.name=.png \u56FE\u6807 param.icon-png.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u56FE\u6807, \u91C7\u7528 PNG \u683C\u5F0F\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,15 +1,35 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Linux Application Image bundler.description=A Directory based image of a linux Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers. -param.raw-executable-url.name=Launcher URL -param.raw-executable-url.description=Override the packager default launcher with a custom launcher. - param.icon-png.name=.png Icon param.icon-png.description=Icon for the application, in PNG format. -param.runtime.name=JRE -param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application. - param.linux-install-dir.name=Linux Installation Directory param.linux-install-dir.description=Installation directory of the application on Linux. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,15 +1,35 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Linux\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8 bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BLinux\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30E9\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 -param.raw-executable-url.name=\u30E9\u30F3\u30C1\u30E3URL -param.raw-executable-url.description=\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E9\u30F3\u30C1\u30E3\u3092\u30AB\u30B9\u30BF\u30E0\u30FB\u30E9\u30F3\u30C1\u30E3\u3067\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002 - param.icon-png.name=.png\u30A2\u30A4\u30B3\u30F3 param.icon-png.description=PNG\u5F62\u5F0F\u3067\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3002 -param.runtime.name=JRE -param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 - error.parameters-null=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30DE\u30C3\u30D7\u304Cnull\u3067\u3059\u3002 error.parameters-null.advice=\u975Enull\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30DE\u30C3\u30D7\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002 error.no-linux-resources=Java\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u306FLinux\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,15 +1,35 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Linux \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 linux \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840\u3002 -param.raw-executable-url.name=\u542F\u52A8\u7A0B\u5E8F URL -param.raw-executable-url.description=\u4F7F\u7528\u5B9A\u5236\u542F\u52A8\u7A0B\u5E8F\u8986\u76D6\u6253\u5305\u7A0B\u5E8F\u9ED8\u8BA4\u542F\u52A8\u7A0B\u5E8F\u3002 - param.icon-png.name=.png \u56FE\u6807 param.icon-png.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u56FE\u6807, \u91C7\u7528 PNG \u683C\u5F0F\u3002 -param.runtime.name=JRE -param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002 - error.parameters-null=\u53C2\u6570\u6620\u5C04\u4E3A\u7A7A\u503C\u3002 error.parameters-null.advice=\u8BF7\u4F20\u5165\u975E\u7A7A\u53C2\u6570\u6620\u5C04\u3002 error.no-linux-resources=Java \u6253\u5305\u7A0B\u5E8F\u4E0D\u652F\u6301 Linux\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=DEB Installer bundler.description=Linux Debian Bundle. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=DEB\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9 bundler.description=Linux Debian\u30D0\u30F3\u30C9\u30EB\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=DEB \u5B89\u88C5\u7A0B\u5E8F bundler.description=Linux Debian \u5305\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=RPM Bundle bundler.description=Redhat Package Manager (RPM) bundler. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=RPM\u30D0\u30F3\u30C9\u30EB bundler.description=RedHat Package Manager (RPM)\u306E\u30D0\u30F3\u30C9\u30E9\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties --- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=RPM \u5305 bundler.description=Redhat Package Manager (RPM) \u6253\u5305\u7A0B\u5E8F\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/linux/native/launcher/launcher.cpp --- a/src/jdk.packager/linux/native/launcher/launcher.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/linux/native/launcher/launcher.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -70,12 +70,14 @@ start_launcher start = (start_launcher)dlsym(library, "start_launcher"); stop_launcher stop = (stop_launcher)dlsym(library, "stop_launcher"); - if (start(argc, argv) == true) { - result = 0; - - if (stop != NULL) { + if (start != NULL && stop != NULL) { + if (start(argc, argv) == true) { + result = 0; stop(); } + } else { + fprintf(stderr, + "cannot find start_launcher and stop_launcher in libpackager.so"); } dlclose(library); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,17 +25,14 @@ package jdk.packager.internal.builders.mac; - import jdk.packager.internal.BundlerParamInfo; import jdk.packager.internal.IOUtils; import jdk.packager.internal.Log; import jdk.packager.internal.Platform; import jdk.packager.internal.RelativeFileSet; import jdk.packager.internal.StandardBundlerParam; - import jdk.packager.internal.Arguments; import jdk.packager.internal.resources.mac.MacResources; - import jdk.packager.internal.builders.AbstractAppImageBuilder; import java.io.BufferedWriter; @@ -71,7 +68,6 @@ import static jdk.packager.internal.mac.MacBaseInstallerBundler.*; import static jdk.packager.internal.mac.MacAppBundler.*; - public class MacAppImageBuilder extends AbstractAppImageBuilder { private static final ResourceBundle I18N = @@ -100,54 +96,6 @@ private static List keyChains; - private static Map getMacCategories() { - Map map = new HashMap<>(); - map.put("Business", "public.app-category.business"); - map.put("Developer Tools", "public.app-category.developer-tools"); - map.put("Education", "public.app-category.education"); - map.put("Entertainment", "public.app-category.entertainment"); - map.put("Finance", "public.app-category.finance"); - map.put("Games", "public.app-category.games"); - map.put("Graphics & Design", "public.app-category.graphics-design"); - map.put("Healthcare & Fitness", - "public.app-category.healthcare-fitness"); - map.put("Lifestyle", "public.app-category.lifestyle"); - map.put("Medical", "public.app-category.medical"); - map.put("Music", "public.app-category.music"); - map.put("News", "public.app-category.news"); - map.put("Photography", "public.app-category.photography"); - map.put("Productivity", "public.app-category.productivity"); - map.put("Reference", "public.app-category.reference"); - map.put("Social Networking", "public.app-category.social-networking"); - map.put("Sports", "public.app-category.sports"); - map.put("Travel", "public.app-category.travel"); - map.put("Utilities", "public.app-category.utilities"); - map.put("Video", "public.app-category.video"); - map.put("Weather", "public.app-category.weather"); - - map.put("Action Games", "public.app-category.action-games"); - map.put("Adventure Games", "public.app-category.adventure-games"); - map.put("Arcade Games", "public.app-category.arcade-games"); - map.put("Board Games", "public.app-category.board-games"); - map.put("Card Games", "public.app-category.card-games"); - map.put("Casino Games", "public.app-category.casino-games"); - map.put("Dice Games", "public.app-category.dice-games"); - map.put("Educational Games", "public.app-category.educational-games"); - map.put("Family Games", "public.app-category.family-games"); - map.put("Kids Games", "public.app-category.kids-games"); - map.put("Music Games", "public.app-category.music-games"); - map.put("Puzzle Games", "public.app-category.puzzle-games"); - map.put("Racing Games", "public.app-category.racing-games"); - map.put("Role Playing Games", "public.app-category.role-playing-games"); - map.put("Simulation Games", "public.app-category.simulation-games"); - map.put("Sports Games", "public.app-category.sports-games"); - map.put("Strategy Games", "public.app-category.strategy-games"); - map.put("Trivia Games", "public.app-category.trivia-games"); - map.put("Word Games", "public.app-category.word-games"); - - return map; - } - public static final BundlerParamInfo MAC_CONFIGURE_LAUNCHER_IN_PLIST = new StandardBundlerParam<>( I18N.getString("param.configure-launcher-in-plist"), @@ -243,7 +191,7 @@ (s, p) -> new File(s)); public static final StandardBundlerParam SIGN_BUNDLE = - new StandardBundlerParam<>( + new StandardBundlerParam<>( I18N.getString("param.sign-bundle.name"), I18N.getString("param.sign-bundle.description"), Arguments.CLIOptions.MAC_SIGN.getId(), @@ -322,11 +270,6 @@ } } - @Override - protected String getCacheLocation(Map params) { - return "$CACHEDIR/"; - } - public static boolean validCFBundleVersion(String v) { // CFBundleVersion (String - iOS, OS X) specifies the build version // number of the bundle, which identifies an iteration (released or @@ -618,21 +561,16 @@ newline = "\n"; } - String preloader = PRELOADER_CLASS.fetchFrom(params); - if (preloader != null) { - sb.append(newline) - .append(" -Djavafx.preloader=") - .append(preloader) - .append(""); - } - data.put("DEPLOY_JVM_OPTIONS", sb.toString()); sb = new StringBuilder(); List args = ARGUMENTS.fetchFrom(params); - newline = ""; //So we don't add unneccessary extra line after last append + newline = ""; + // So we don't add unneccessary extra line after last append + for (String o : args) { - sb.append(newline).append(" ").append(o).append(""); + sb.append(newline).append(" ").append(o).append( + ""); newline = "\n"; } data.put("DEPLOY_ARGUMENTS", sb.toString()); @@ -663,10 +601,9 @@ } List mimeTypes = FA_CONTENT_TYPE.fetchFrom(fileAssociation); - String itemContentType = MAC_CF_BUNDLE_IDENTIFIER.fetchFrom(params) + - "." + ((extensions == null || extensions.isEmpty()) - ? "mime" - : extensions.get(0)); + String itemContentType = MAC_CF_BUNDLE_IDENTIFIER.fetchFrom(params) + + "." + ((extensions == null || extensions.isEmpty()) + ? "mime" : extensions.get(0)); String description = FA_DESCRIPTION.fetchFrom(fileAssociation); File icon = FA_ICON.fetchFrom(fileAssociation); //TODO FA_ICON_ICNS @@ -697,7 +634,6 @@ .append("\n"); if (icon != null && icon.exists()) { - //? bundleDocumentTypes .append(" CFBundleTypeIconFile\n") .append(" ") diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -37,7 +37,6 @@ import jdk.packager.internal.UnsupportedPlatformException; import jdk.packager.internal.builders.mac.MacAppImageBuilder; import jdk.packager.internal.resources.mac.MacResources; - import jdk.packager.internal.JLinkBundlerHelper; import java.io.File; @@ -309,7 +308,7 @@ } } - //to be used by chained bundlers, e.g. by EXE bundler to avoid + // to be used by chained bundlers, e.g. by EXE bundler to avoid // skipping validation if p.type does not include "image" public boolean doValidate(Map p) throws UnsupportedPlatformException, ConfigException { @@ -516,26 +515,4 @@ return Platform.getPlatform() == Platform.MAC; } -// private void createLauncherForEntryPoint(Map p, -// File rootDirectory) throws IOException { -// prepareConfigFiles(p); -// -// if (LAUNCHER_CFG_FORMAT.fetchFrom(p).equals(CFG_FORMAT_PROPERTIES)) { -// writeCfgFile(p, rootDirectory); -// } else { -// writeCfgFile(p, new File(rootDirectory, getLauncherCfgName(p)), -// "$APPDIR/PlugIns/Java.runtime"); -// } -// -// // Copy executable root folder -// File executableFile = new File(rootDirectory, -// "Contents/MacOS/" + getLauncherName(p)); -// IOUtils.copyFromURL( -// RAW_EXECUTABLE_URL.fetchFrom(p), -// executableFile); -// executableFile.setExecutable(true, false); -// -// } -// - } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -161,9 +161,6 @@ // icns needs @2 versions, so load in the @2 default p.put(DEFAULT_ICNS_ICON.getID(), TEMPLATE_BUNDLE_ICON_HIDPI); - // next we need to change the jdk/jre stripping to strip gstreamer -// p.put(MAC_RULES.getID(), createMacAppStoreRuntimeRules(p)); - // now we create the app File appImageDir = APP_IMAGE_BUILD_ROOT.fetchFrom(p); try { diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -59,7 +59,7 @@ ResourceBundle.getBundle( "jdk.packager.internal.resources.mac.MacBaseInstallerBundler"); - //This could be generalized more to be for any type of Image Bundler + // This could be generalized more to be for any type of Image Bundler public static final BundlerParamInfo APP_BUNDLER = new StandardBundlerParam<>( I18N.getString("param.app-bundler.name"), diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java Wed Oct 17 13:50:11 2018 -0400 @@ -26,6 +26,8 @@ package jdk.packager.internal.mac; import jdk.packager.internal.IOUtils; +import jdk.packager.internal.Log; + import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayInputStream; @@ -119,10 +121,8 @@ DateFormat df = new SimpleDateFormat( "MMM dd kk:mm:ss yyyy z", Locale.ENGLISH); result = df.parse(output); - } - catch (IOException ioe) { - } - catch (ParseException ex) { + } catch (IOException | ParseException ex) { + Log.debug(ex); } return result; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -28,15 +28,15 @@ import jdk.packager.internal.*; import jdk.packager.internal.IOUtils; import jdk.packager.internal.resources.mac.MacResources; +import jdk.packager.internal.Arguments; import java.io.*; +import java.nio.file.Files; import java.text.MessageFormat; import java.util.*; -import jdk.packager.internal.Arguments; import static jdk.packager.internal.StandardBundlerParam.*; - public class MacDmgBundler extends MacBaseInstallerBundler { private static final ResourceBundle I18N = @@ -63,7 +63,6 @@ baseResourceLoader = MacResources.class; } - //@Override public File bundle(Map params, File outdir) { Log.info(MessageFormat.format(I18N.getString("message.building-dmg"), APP_NAME.fetchFrom(params))); @@ -216,12 +215,12 @@ if (licFile == null) { // this is NPE protection, - // validate should have caught it's absence - // so we don't complain or throw an error + // validate should have already caught it's absence + Log.error("Licence file is null"); return; } - byte[] licenseContentOriginal = IOUtils.readFully(licFile); + byte[] licenseContentOriginal = Files.readAllBytes(licFile.toPath()); String licenseInBase64 = Base64.getEncoder().encodeToString(licenseContentOriginal); @@ -287,14 +286,14 @@ // In theory we need to extract name from results of attach command // However, this will be a problem for customization as name will // possibly change every time and developer will not be able to fix it - // As we are using tmp dir chance we get "different" namr are low => + // As we are using tmp dir chance we get "different" name are low => // Use fixed name we used for bundle prepareDMGSetupScript(APP_NAME.fetchFrom(params), params); return true; } - //name of post-image script + // name of post-image script private File getConfig_Script(Map params) { return new File(CONFIG_ROOT.fetchFrom(params), APP_NAME.fetchFrom(params) + "-post-image.sh"); @@ -314,7 +313,7 @@ } } - //generic find attempt + // generic find attempt try { ProcessBuilder pb = new ProcessBuilder("xcrun", "-find", "SetFile"); Process p = pb.start(); @@ -364,7 +363,7 @@ String hdiUtilVerbosityFlag = Log.isDebug() ? "-verbose" : "-quiet"; - //create temp image + // create temp image ProcessBuilder pb = new ProcessBuilder( hdiutil, "create", @@ -376,7 +375,7 @@ "-format", "UDRW"); IOUtils.exec(pb, ECHO_MODE.fetchFrom(p)); - //mount temp image + // mount temp image pb = new ProcessBuilder( hdiutil, "attach", @@ -388,7 +387,7 @@ File mountedRoot = new File(imagesRoot.getAbsolutePath(), APP_NAME.fetchFrom(p)); - //volume icon + // volume icon File volumeIconFile = new File(mountedRoot, ".VolumeIcon.icns"); IOUtils.copyFile(getConfig_VolumeIcon(p), volumeIconFile); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -161,7 +161,6 @@ baseResourceLoader = MacResources.class; } - // @Override public File bundle(Map params, File outdir) { Log.info(MessageFormat.format(I18N.getString("message.building-pkg"), APP_NAME.fetchFrom(params))); @@ -374,10 +373,10 @@ // this is NPE protection, validate should have caught it's absence // so we don't complain or throw an error if (licFile != null) { - out.println(""); + out.println(""); } } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac Application Image bundler.description=A Directory based image of a mac Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers @@ -34,9 +60,6 @@ param.default-icon-icns=Default Icon param.default-icon-icns.description=The Default Icon for when a user does not specify an icns file. -param.runtime.name=JRE -param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application. - param.sign-bundle.name=Sign Bundle param.sign-bundle.description=Request that the bundle be signed. @@ -74,4 +97,4 @@ message.using-custom-resource-from-classpath=Using custom package resource {0} (loaded from {1}) message.using-default-resource-from-classpath=Using default package resource {0} (add {1} to the class path to customize) message.ignoring.symlink=Warning: codesign is skipping the symlink {0} -message.keychain.error=Error: unable to get keychain list. \ No newline at end of file +message.keychain.error=Error: unable to get keychain list. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8 bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BMac\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 @@ -34,9 +60,6 @@ param.default-icon-icns=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3 param.default-icon-icns.description=\u30E6\u30FC\u30B6\u30FC\u304C\u30A2\u30A4\u30B3\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3002 -param.runtime.name=JRE -param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 - param.images-root.name= param.images-root.description= diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840 @@ -34,9 +60,6 @@ param.default-icon-icns=\u9ED8\u8BA4\u56FE\u6807 param.default-icon-icns.description=\u7528\u6237\u672A\u6307\u5B9A icns \u6587\u4EF6\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u56FE\u6807\u3002 -param.runtime.name=JRE -param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002 - param.images-root.name= param.images-root.description= diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac Application Image bundler.description=A Directory based image of a mac Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers @@ -34,9 +60,6 @@ param.default-icon-icns=Default Icon param.default-icon-icns.description=The Default Icon for when a user does not specify an icns file. -param.runtime.name=JRE -param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application. - error.cannot-create-output-dir=Output directory {0} cannot be created. error.cannot-write-to-output-dir=Output directory {0} is not writable. error.invalid-cfbundle-version=Invalid CFBundleVersion - ''{0}'' diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -34,9 +34,6 @@ param.default-icon-icns=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3 param.default-icon-icns.description=\u30E6\u30FC\u30B6\u30FC\u304C\u30A2\u30A4\u30B3\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3002 -param.runtime.name=JRE -param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 - error.cannot-create-output-dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002 error.cannot-write-to-output-dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u66F8\u8FBC\u307F\u4E0D\u53EF\u3067\u3059\u3002 error.invalid-cfbundle-version=CFBundleVersion - ''{0}''\u304C\u7121\u52B9\u3067\u3059 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840 @@ -34,9 +60,6 @@ param.default-icon-icns=\u9ED8\u8BA4\u56FE\u6807 param.default-icon-icns.description=\u7528\u6237\u672A\u6307\u5B9A icns \u6587\u4EF6\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u56FE\u6807\u3002 -param.runtime.name=JRE -param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002 - error.cannot-create-output-dir=\u65E0\u6CD5\u521B\u5EFA\u8F93\u51FA\u76EE\u5F55 {0}\u3002 error.cannot-write-to-output-dir=\u8F93\u51FA\u76EE\u5F55 {0} \u4E0D\u53EF\u5199\u3002 error.invalid-cfbundle-version=\u65E0\u6548\u7684 CFBundleVersion - ''{0}'' diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac App Store Ready Bundler bundler.description=Creates a binary bundle ready for deployment into the Mac App Store." diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac App Store\u306E\u6E96\u5099\u5B8C\u4E86\u30D0\u30F3\u30C9\u30E9 bundler.description=Mac App Store\u3078\u306E\u30C7\u30D7\u30ED\u30A4\u30E1\u30F3\u30C8\u6E96\u5099\u5B8C\u4E86\u306E\u30D0\u30A4\u30CA\u30EA\u30FB\u30D0\u30F3\u30C9\u30EB\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002" diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=\u652F\u6301 Mac App Store \u7684\u6253\u5305\u7A0B\u5E8F bundler.description=\u521B\u5EFA\u53EF\u90E8\u7F72\u5230 Mac App Store \u4E2D\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6\u5305\u3002" diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac App Store bundler.description=Creates a binary bundle ready for deployment into the Mac App Store. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac App Store bundler.description=Mac App Store\u3078\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u6e96\u5099\u5b8c\u4e86\u306e\u30d0\u30a4\u30ca\u30ea\u30fb\u30d0\u30f3\u30c9\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Mac App Store bundler.description=\u521b\u5efa\u53ef\u90e8\u7f72\u5230 Mac App Store \u4e2d\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u5305\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=DMG Installer bundler.description=Mac DMG Installer Bundle diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=DMG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9 bundler.description=Mac DMG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=DMG \u5B89\u88C5\u7A0B\u5E8F bundler.description=Mac DMG \u5B89\u88C5\u7A0B\u5E8F\u5305 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=PKG Installer bundler.description=Mac PKG Installer Bundle. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=PKG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9 bundler.description=Mac PKG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties --- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=PKG \u5B89\u88C5\u7A0B\u5E8F bundler.description=Mac PKG \u5B89\u88C5\u7A0B\u5E8F\u5305\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/macosx/native/library/MacPlatform.mm --- a/src/jdk.packager/macosx/native/library/MacPlatform.mm Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/macosx/native/library/MacPlatform.mm Wed Oct 17 13:50:11 2018 -0400 @@ -47,18 +47,15 @@ #import #endif //__OBJC__ -#define MAC_PACKAGER_TMP_DIR "/Library/Application Support/Oracle/Java/Packager/tmp" - -//-------------------------------------------------------------------------------------------------- +#define MAC_PACKAGER_TMP_DIR \ + "/Library/Application Support/Oracle/Java/Packager/tmp" NSString* StringToNSString(TString Value) { NSString* result = [NSString stringWithCString:Value.c_str() - encoding:[NSString defaultCStringEncoding]]; + encoding:[NSString defaultCStringEncoding]]; return result; } -//-------------------------------------------------------------------------------------------------- - MacPlatform::MacPlatform(void) : Platform(), GenericPlatform(), PosixPlatform() { } @@ -91,30 +88,38 @@ printf("Unable to reactivate another instance, PID is undefined"); return; } - NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier: singleInstanceProcessId]; + NSRunningApplication* app = + [NSRunningApplication runningApplicationWithProcessIdentifier: + singleInstanceProcessId]; if (app != nil) { [app activateWithOptions: NSApplicationActivateIgnoringOtherApps]; } else { - printf("Unable to reactivate another instance PID: %d", singleInstanceProcessId); + printf("Unable to reactivate another instance PID: %d", + singleInstanceProcessId); } } -TCHAR* MacPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) { +TCHAR* MacPlatform::ConvertStringToFileSystemString(TCHAR* Source, + bool &release) { TCHAR* result = NULL; release = false; - CFStringRef StringRef = CFStringCreateWithCString(kCFAllocatorDefault, Source, kCFStringEncodingUTF8); + CFStringRef StringRef = CFStringCreateWithCString(kCFAllocatorDefault, + Source, kCFStringEncodingUTF8); if (StringRef != NULL) { @try { - CFIndex length = CFStringGetMaximumSizeOfFileSystemRepresentation(StringRef); + CFIndex length = + CFStringGetMaximumSizeOfFileSystemRepresentation(StringRef); result = new char[length + 1]; - - if (CFStringGetFileSystemRepresentation(StringRef, result, length)) { - release = true; - } - else { - delete[] result; - result = NULL; + if (result != NULL) { + if (CFStringGetFileSystemRepresentation(StringRef, + result, length)) { + release = true; + } + else { + delete[] result; + result = NULL; + } } } @finally { @@ -125,26 +130,31 @@ return result; } -TCHAR* MacPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) { +TCHAR* MacPlatform::ConvertFileSystemStringToString(TCHAR* Source, + bool &release) { TCHAR* result = NULL; release = false; - CFStringRef StringRef = CFStringCreateWithFileSystemRepresentation(kCFAllocatorDefault, Source); + CFStringRef StringRef = CFStringCreateWithFileSystemRepresentation( + kCFAllocatorDefault, Source); if (StringRef != NULL) { @try { CFIndex length = CFStringGetLength(StringRef); if (length > 0) { - CFIndex maxSize = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8); + CFIndex maxSize = CFStringGetMaximumSizeForEncoding( + length, kCFStringEncodingUTF8); result = new char[maxSize + 1]; - - if (CFStringGetCString(StringRef, result, maxSize, kCFStringEncodingUTF8) == true) { - release = true; - } - else { - delete[] result; - result = NULL; + if (result != NULL) { + if (CFStringGetCString(StringRef, result, maxSize, + kCFStringEncodingUTF8) == true) { + release = true; + } + else { + delete[] result; + result = NULL; + } } } } @@ -163,14 +173,16 @@ TString MacPlatform::GetPackageRootDirectory() { NSBundle *mainBundle = [NSBundle mainBundle]; NSString *mainBundlePath = [mainBundle bundlePath]; - NSString *contentsPath = [mainBundlePath stringByAppendingString:@"/Contents"]; + NSString *contentsPath = + [mainBundlePath stringByAppendingString:@"/Contents"]; TString result = [contentsPath UTF8String]; return result; } TString MacPlatform::GetAppDataDirectory() { TString result; - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + NSArray *paths = NSSearchPathForDirectoriesInDomains( + NSApplicationSupportDirectory, NSUserDomainMask, YES); NSString *applicationSupportDirectory = [paths firstObject]; result = [applicationSupportDirectory UTF8String]; return result; @@ -180,11 +192,11 @@ TString result; // first try lib/, then lib/jli - result = FilePath::IncludeTrailingSeparater(RuntimePath) + + result = FilePath::IncludeTrailingSeparator(RuntimePath) + _T("Contents/Home/lib/libjli.dylib"); if (FilePath::FileExists(result) == false) { - result = FilePath::IncludeTrailingSeparater(RuntimePath) + + result = FilePath::IncludeTrailingSeparator(RuntimePath) + _T("Contents/Home/lib/jli/libjli.dylib"); if (FilePath::FileExists(result) == false) { @@ -203,8 +215,10 @@ return result; } -void AppendPListArrayToIniFile(NSDictionary *infoDictionary, IniFile *result, TString Section) { - NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()]; +void AppendPListArrayToIniFile(NSDictionary *infoDictionary, + IniFile *result, TString Section) { + NSString *sectionKey = + [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()]; NSDictionary *array = [infoDictionary objectForKey:sectionKey]; for (id option in array) { @@ -221,11 +235,13 @@ } } -void AppendPListDictionaryToIniFile(NSDictionary *infoDictionary, IniFile *result, TString Section, bool FollowSection = true) { +void AppendPListDictionaryToIniFile(NSDictionary *infoDictionary, + IniFile *result, TString Section, bool FollowSection = true) { NSDictionary *dictionary = NULL; if (FollowSection == true) { - NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()]; + NSString *sectionKey = [NSString stringWithUTF8String:PlatformString( + Section).toMultibyte()]; dictionary = [infoDictionary objectForKey:sectionKey]; } else { @@ -235,7 +251,8 @@ for (id key in dictionary) { id option = [dictionary valueForKey:key]; - if ([key isKindOfClass:[NSString class]] && [option isKindOfClass:[NSString class]]) { + if ([key isKindOfClass:[NSString class]] && + [option isKindOfClass:[NSString class]]) { TString name = [key UTF8String]; TString value = [option UTF8String]; result->Append(Section, name, value); @@ -243,14 +260,15 @@ } } -// Convert parts of the info.plist to the INI format the rest of the packager uses unless -// a packager config file exists. +// Convert parts of the info.plist to the INI format the rest of the packager +// uses unless a packager config file exists. ISectionalPropertyContainer* MacPlatform::GetConfigFile(TString FileName) { IniFile* result = new IniFile(); if (UsePListForConfigFile() == false) { if (result->LoadFromFile(FileName) == false) { - // New property file format was not found, attempt to load old property file format. + // New property file format was not found, + // attempt to load old property file format. Helpers::LoadOldConfigFile(FileName, result); } } @@ -260,20 +278,26 @@ std::map keys = GetKeys(); // Packager options. - AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPLICATION], false); + AppendPListDictionaryToIniFile(infoDictionary, result, + keys[CONFIG_SECTION_APPLICATION], false); // jvmargs - AppendPListArrayToIniFile(infoDictionary, result, keys[CONFIG_SECTION_JVMOPTIONS]); + AppendPListArrayToIniFile(infoDictionary, result, + keys[CONFIG_SECTION_JVMOPTIONS]); // jvmuserargs - AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_JVMUSEROPTIONS]); + AppendPListDictionaryToIniFile(infoDictionary, result, + keys[CONFIG_SECTION_JVMUSEROPTIONS]); // Generate AppCDS Cache - AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPCDSJVMOPTIONS]); - AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS]); + AppendPListDictionaryToIniFile(infoDictionary, result, + keys[CONFIG_SECTION_APPCDSJVMOPTIONS]); + AppendPListDictionaryToIniFile(infoDictionary, result, + keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS]); // args - AppendPListArrayToIniFile(infoDictionary, result, keys[CONFIG_SECTION_ARGOPTIONS]); + AppendPListArrayToIniFile(infoDictionary, result, + keys[CONFIG_SECTION_ARGOPTIONS]); } return result; @@ -281,7 +305,8 @@ TString GetModuleFileNameOSX() { Dl_info module_info; - if (dladdr(reinterpret_cast(GetModuleFileNameOSX), &module_info) == 0) { + if (dladdr(reinterpret_cast(GetModuleFileNameOSX), + &module_info) == 0) { // Failed to find the symbol we asked for. return std::string(); } @@ -311,7 +336,10 @@ TPlatformNumber MacPlatform::GetMemorySize() { unsigned long long memory = [[NSProcessInfo processInfo] physicalMemory]; - TPlatformNumber result = memory / 1048576; // Convert from bytes to megabytes. + + // Convert from bytes to megabytes. + TPlatformNumber result = memory / 1048576; + return result; } @@ -322,28 +350,50 @@ return GenericPlatform::GetKeys(); } else { - keys.insert(std::map::value_type(CONFIG_VERSION, _T("app.version"))); - keys.insert(std::map::value_type(CONFIG_MAINJAR_KEY, _T("JVMMainJarName"))); - keys.insert(std::map::value_type(CONFIG_MAINMODULE_KEY, _T("JVMMainModuleName"))); - keys.insert(std::map::value_type(CONFIG_MAINCLASSNAME_KEY, _T("JVMMainClassName"))); - keys.insert(std::map::value_type(CONFIG_CLASSPATH_KEY, _T("JVMAppClasspath"))); - keys.insert(std::map::value_type(APP_NAME_KEY, _T("CFBundleName"))); - keys.insert(std::map::value_type(CONFIG_APP_ID_KEY, _T("JVMPreferencesID"))); - keys.insert(std::map::value_type(JVM_RUNTIME_KEY, _T("JVMRuntime"))); - keys.insert(std::map::value_type(PACKAGER_APP_DATA_DIR, _T("CFBundleIdentifier"))); + keys.insert(std::map::value_type(CONFIG_VERSION, + _T("app.version"))); + keys.insert(std::map::value_type(CONFIG_MAINJAR_KEY, + _T("JVMMainJarName"))); + keys.insert(std::map::value_type(CONFIG_MAINMODULE_KEY, + _T("JVMMainModuleName"))); + keys.insert(std::map::value_type( + CONFIG_MAINCLASSNAME_KEY, _T("JVMMainClassName"))); + keys.insert(std::map::value_type( + CONFIG_CLASSPATH_KEY, _T("JVMAppClasspath"))); + keys.insert(std::map::value_type(APP_NAME_KEY, + _T("CFBundleName"))); + keys.insert(std::map::value_type(CONFIG_APP_ID_KEY, + _T("JVMPreferencesID"))); + keys.insert(std::map::value_type(JVM_RUNTIME_KEY, + _T("JVMRuntime"))); + keys.insert(std::map::value_type(PACKAGER_APP_DATA_DIR, + _T("CFBundleIdentifier"))); - keys.insert(std::map::value_type(CONFIG_SPLASH_KEY, _T("app.splash"))); - keys.insert(std::map::value_type(CONFIG_APP_MEMORY, _T("app.memory"))); - keys.insert(std::map::value_type(CONFIG_APP_DEBUG, _T("app.debug"))); - keys.insert(std::map::value_type(CONFIG_APPLICATION_INSTANCE, _T("app.application.instance"))); + keys.insert(std::map::value_type(CONFIG_SPLASH_KEY, + _T("app.splash"))); + keys.insert(std::map::value_type(CONFIG_APP_MEMORY, + _T("app.memory"))); + keys.insert(std::map::value_type(CONFIG_APP_DEBUG, + _T("app.debug"))); + keys.insert(std::map::value_type( + CONFIG_APPLICATION_INSTANCE, _T("app.application.instance"))); - keys.insert(std::map::value_type(CONFIG_SECTION_APPLICATION, _T("Application"))); - keys.insert(std::map::value_type(CONFIG_SECTION_JVMOPTIONS, _T("JVMOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, _T("JVMUserOverrideOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, _T("AppCDSGenerateCacheJVMOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_ARGOPTIONS, _T("ArgOptions"))); + keys.insert(std::map::value_type( + CONFIG_SECTION_APPLICATION, _T("Application"))); + keys.insert(std::map::value_type( + CONFIG_SECTION_JVMOPTIONS, _T("JVMOptions"))); + keys.insert(std::map::value_type( + CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions"))); + keys.insert(std::map::value_type( + CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, + _T("JVMUserOverrideOptions"))); + keys.insert(std::map::value_type( + CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions"))); + keys.insert(std::map::value_type( + CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, + _T("AppCDSGenerateCacheJVMOptions"))); + keys.insert(std::map::value_type( + CONFIG_SECTION_ARGOPTIONS, _T("ArgOptions"))); } return keys; @@ -375,20 +425,20 @@ } #endif //DEBUG -//-------------------------------------------------------------------------------------------------- - class UserDefaults { private: OrderedMap FData; TString FDomainName; - bool ReadDictionary(NSDictionary *Items, OrderedMap &Data) { + bool ReadDictionary(NSDictionary *Items, OrderedMap &Data) { bool result = false; for (id key in Items) { id option = [Items valueForKey:key]; - if ([key isKindOfClass:[NSString class]] && [option isKindOfClass:[NSString class]]) { + if ([key isKindOfClass:[NSString class]] && + [option isKindOfClass:[NSString class]]) { TString name = [key UTF8String]; TString value = [option UTF8String]; @@ -402,7 +452,8 @@ } // Open and read the defaults file specified by domain. - bool ReadPreferences(NSDictionary *Defaults, std::list Keys, OrderedMap &Data) { + bool ReadPreferences(NSDictionary *Defaults, std::list Keys, + OrderedMap &Data) { bool result = false; if (Keys.size() > 0 && Defaults != NULL) { @@ -457,13 +508,12 @@ } }; -//-------------------------------------------------------------------------------------------------- - MacJavaUserPreferences::MacJavaUserPreferences(void) : JavaUserPreferences() { } TString toLowerCase(TString Value) { - // Use Cocoa's lowercase method because it is better than the ones provided by C/C++. + // Use Cocoa's lowercase method because it is better than + // the ones provided by C/C++. NSString *temp = StringToNSString(Value); temp = [temp lowercaseString]; TString result = [temp UTF8String]; @@ -485,15 +535,18 @@ return result; } -// 1. If the path is fewer than three components (Example: one/two/three) then the domain is the +// 1. If the path is fewer than three components (Example: one/two/three) +// then the domain is the // default domain "com.apple.java.util.prefs" stored in the plist file // ~/Library/Preferences/com.apple.java.util.prefs.plist // // For example: If AppID = "hello", the path is "hello/JVMUserOptions and the -// plist file is ~/Library/Preferences/com.apple.java.util.prefs.plist containing the contents: +// plist file is ~/Library/Preferences/com.apple.java.util.prefs.plist +// containing the contents: // // -// +// // // // / @@ -513,12 +566,15 @@ // 2. If the path is three or more, the first three become the domain name (even // if shared across applicaitons) and the remaining become individual keys. // -// For example: If AppID = "com/hello/foo", the path is "hello/JVMUserOptions and the -// domain is "com.hello.foo" stored in the plist file ~/Library/Preferences/com.hello.foo.plist +// For example: If AppID = "com/hello/foo", the path is +// "hello/JVMUserOptions and the +// domain is "com.hello.foo" stored in the plist file +// ~/Library/Preferences/com.hello.foo.plist // containing the contents: // // -// +// // // // /com/hello/foo/ @@ -534,12 +590,14 @@ // // NOTE: To change these values use the command line utility "defaults": // Example: defaults read com.apple.java.util.prefs / -// Since OS 10.9 Mavericks the defaults are cashed so directly modifying the files is not recommended. +// Since OS 10.9 Mavericks the defaults are cashed so directly modifying +// the files is not recommended. bool MacJavaUserPreferences::Load(TString Appid) { bool result = false; if (Appid.empty() == false) { - // This is for backwards compatability. Older packaged applications have an + // This is for backwards compatability. + // Older packaged applications have an // app.preferences.id that is delimited by period (".") rather than // slash ("/") so convert to newer style. TString path = Helpers::ReplaceString(Appid, _T("."), _T("/")); @@ -548,12 +606,14 @@ TString domainName; std::list keys = Split(path, _T("/")); - // If there are less than three parts to the path then use the default preferences file. + // If there are less than three parts to the path then use + // the default preferences file. if (keys.size() < 3) { domainName = _T("com.apple.java.util.prefs"); // Append slash to the end of each key. - for (std::list::iterator iterator = keys.begin(); iterator != keys.end(); iterator++) { + for (std::list::iterator iterator = keys.begin(); + iterator != keys.end(); iterator++) { TString item = *iterator; item = item + _T("/"); *iterator = item; @@ -563,7 +623,8 @@ keys.push_front(_T("/")); } else { - // Remove the first three keys and use them for the root key and the preferencesID. + // Remove the first three keys and use them for the + // root key and the preferencesID. TString one = keys.front(); keys.pop_front(); TString two = keys.front(); @@ -574,14 +635,16 @@ domainName = toLowerCase(domainName); // Append slash to the end of each key. - for (std::list::iterator iterator = keys.begin(); iterator != keys.end(); iterator++) { + for (std::list::iterator iterator = keys.begin(); + iterator != keys.end(); iterator++) { TString item = *iterator; item = item + _T("/"); *iterator = item; } // The root key is /one/two/three/ - TString key = TString("/") + one + TString("/") + two + TString("/") + three + TString("/"); + TString key = TString("/") + one + TString("/") + two + + TString("/") + three + TString("/"); keys.push_front(key); } @@ -596,6 +659,5 @@ return result; } -//-------------------------------------------------------------------------------------------------- #endif //MAC diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/Main.java --- a/src/jdk.packager/share/classes/jdk/packager/Main.java Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package jdk.packager; - -import jdk.packager.internal.Arguments; -import jdk.packager.internal.Log; -import jdk.packager.internal.CLIHelp; -import java.io.PrintWriter; -import java.util.ResourceBundle; - -public class Main { - - private static final ResourceBundle bundle = - ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle"); - - private static final String version = bundle.getString("MSG_Version") - + " " + System.getProperty("java.version") + "\n"; - - public static void main(String... args) throws Exception { - // Create logger with default system.out and system.err - Log.Logger logger = new Log.Logger(false); - Log.setLogger(logger); - - int status = run(args); - System.exit(status); - } - - public static int run(PrintWriter out, PrintWriter err, String... args) - throws Exception { - // Create logger with provided streams - Log.Logger logger = new Log.Logger(false); - logger.setPrintWriter(out, err); - Log.setLogger(logger); - - int status = run(args); - Log.flush(); - return status; - } - - public static int run(String... args) throws Exception { - if (args.length == 0) { - CLIHelp.showHelp(true); - } else if (hasHelp(args)){ - CLIHelp.showHelp(false); - } else if (args.length == 1 && args[0].equals("--version")) { - Log.info(version); - } else { - try { - Arguments arguments = new Arguments(args); - arguments.processArguments(); - } catch (Exception e) { - if (Arguments.verbose()) { - throw e; - } else { - Log.error(e.getMessage()); - if (e.getCause() != null && e.getCause() != e) { - Log.error(e.getCause().getMessage()); - } - return -1; - } - } - } - - return 0; - } - - private static boolean hasHelp(String[] args) { - for (String a : args) { - if ("--help".equals(a) || "-h".equals(a)) { - return true; - } - } - return false; - } - -} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,10 +25,10 @@ package jdk.packager.internal; - import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; +import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.StandardCopyOption; @@ -37,7 +37,6 @@ import java.util.Map; import java.util.ResourceBundle; - public abstract class AbstractBundler implements Bundler { private static final ResourceBundle I18N = ResourceBundle.getBundle( @@ -59,15 +58,18 @@ protected Class baseResourceLoader = null; - protected void fetchResource( - String publicName, String category, + protected void fetchResource(String publicName, String category, String defaultName, File result, boolean verbose, File publicRoot) throws IOException { InputStream is = streamResource(publicName, category, defaultName, verbose, publicRoot); if (is != null) { - Files.copy(is, result.toPath(), - StandardCopyOption.REPLACE_EXISTING); + try { + Files.copy(is, result.toPath(), + StandardCopyOption.REPLACE_EXISTING); + } finally { + is.close(); + } } else { if (verbose) { Log.info(MessageFormat.format(I18N.getString( @@ -78,14 +80,17 @@ } } - protected void fetchResource( - String publicName, String category, + protected void fetchResource(String publicName, String category, File defaultFile, File result, boolean verbose, File publicRoot) throws IOException { InputStream is = streamResource(publicName, category, null, verbose, publicRoot); if (is != null) { - Files.copy(is, result.toPath()); + try { + Files.copy(is, result.toPath()); + } finally { + is.close(); + } } else { IOUtils.copyFile(defaultFile, result); if (verbose) { @@ -106,7 +111,8 @@ if (publicRoot != null) { File publicResource = new File(publicRoot, publicName); if (publicResource.exists() && publicResource.isFile()) { - is = new FileInputStream(publicResource); + is = new BufferedInputStream( + new FileInputStream(publicResource)); } } else { is = baseResourceLoader.getClassLoader().getResourceAsStream( @@ -117,17 +123,19 @@ if (is == null && defaultName != null) { is = baseResourceLoader.getResourceAsStream(defaultName); } - String msg = null; - if (custom) { - msg = MessageFormat.format(I18N.getString( - "message.using-custom-resource-from-classpath"), - category == null ? "" : "[" + category + "] ", publicName); - } else if (is != null) { - msg = MessageFormat.format(I18N.getString( - "message.using-default-resource-from-classpath"), - category == null ? "" : "[" + category + "] ", publicName); - } if (verbose && is != null) { + String msg = null; + if (custom) { + msg = MessageFormat.format(I18N.getString( + "message.using-custom-resource-from-classpath"), + category == null ? + "" : "[" + category + "] ", publicName); + } else { + msg = MessageFormat.format(I18N.getString( + "message.using-default-resource-from-classpath"), + category == null ? + "" : "[" + category + "] ", publicName); + } Log.info(msg); } return is; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -33,12 +33,14 @@ import static jdk.packager.internal.StandardBundlerParam.*; - /** * Common utility methods used by app image bundlers. */ public abstract class AbstractImageBundler extends AbstractBundler { + private final static String JAVA_VERSION_SPEC = + "java version \"((\\d+).(\\d+).(\\d+).(\\d+))(-(.*))?(\\+[^\"]*)?\""; + private static final ResourceBundle I18N = ResourceBundle.getBundle( "jdk.packager.internal.resources.AbstractImageBundler"); @@ -83,8 +85,7 @@ params.put(".runtime.version.patch", "0"); params.put(".runtime.version.modifiers", matcher.group(7)); } else { - Pattern newVersionMatcher = Pattern.compile( - "java version \"((\\d+).(\\d+).(\\d+).(\\d+))(-(.*))?(\\+[^\"]*)?\""); + Pattern newVersionMatcher = Pattern.compile(JAVA_VERSION_SPEC); matcher = newVersionMatcher.matcher(versionOutput); if (matcher.find()) { params.put(".runtime.version", matcher.group(1)); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java Wed Oct 17 13:50:11 2018 -0400 @@ -24,6 +24,9 @@ */ package jdk.packager.internal; +import jdk.packager.internal.bundlers.Bundler; +import jdk.packager.internal.bundlers.BundleParams; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -47,8 +50,6 @@ import java.util.stream.Stream; import java.util.regex.Matcher; import java.util.regex.Pattern; -import jdk.packager.internal.bundlers.Bundler; -import jdk.packager.internal.bundlers.BundleParams; public class Arguments { private static final ResourceBundle I18N = ResourceBundle.getBundle( @@ -221,7 +222,6 @@ FILES ("files", "f", OptionCategories.PROPERTY, () -> { context().files = new ArrayList<>(); String files = popArg(); - // TODO: should we split using ' '(space) ? context().files.addAll( Arrays.asList(files.split(File.pathSeparator))); }), @@ -541,8 +541,8 @@ if (!hasAppImage && !hasMainJar && !hasMainModule && !hasMainClass && !jreInstaller) { - Log.info("ERROR: Main jar, main class, main module, or app-image " - + "must be specified."); + Log.info("ERROR: Main jar, main class, main module, " + + "or app-image must be specified."); } else if (!hasMainModule && !hasMainClass) { // try to get main-class from manifest String mainClass = getMainClassFromManifest(); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java Wed Oct 17 13:50:11 2018 -0400 @@ -32,8 +32,8 @@ import java.util.concurrent.CopyOnWriteArrayList; /** - * A basic bundlers collection that loads the OpenJFX default bundlers. - * Loads the bundlers common to OpenJFX. + * A basic bundlers collection that loads the default bundlers. + * Loads the common bundlers common. *
    *
  • Windows file image
  • *
  • Mac .app
  • diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java Wed Oct 17 13:50:11 2018 -0400 @@ -29,7 +29,6 @@ import java.util.function.BiFunction; import java.util.function.Function; - public class BundlerParamInfo { /** * The user friendly name of the parameter diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java Wed Oct 17 13:50:11 2018 -0400 @@ -29,7 +29,6 @@ import java.util.Iterator; import java.util.ServiceLoader; - public interface Bundlers { /** diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java Wed Oct 17 13:50:11 2018 -0400 @@ -22,11 +22,11 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ + package jdk.packager.internal; import java.util.ResourceBundle; - public class CLIHelp { private static final ResourceBundle I18N = ResourceBundle.getBundle( diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java Wed Oct 17 13:50:11 2018 -0400 @@ -27,7 +27,6 @@ import java.io.File; - public abstract class CommonParams { File outdir; boolean verbose; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,6 @@ package jdk.packager.internal; - public class ConfigException extends Exception { final String advice; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Wed Oct 17 13:50:11 2018 -0400 @@ -27,7 +27,9 @@ import jdk.packager.internal.bundlers.*; import jdk.packager.internal.bundlers.Bundler.BundleType; + import java.io.File; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -60,7 +62,6 @@ Boolean singleton; String applicationClass; - String preloader; List params; List arguments; //unnamed arguments @@ -69,47 +70,16 @@ String addModules = null; String limitModules = null; Boolean stripNativeCommands = null; - Boolean detectmods = null; String modulePath = null; String module = null; String debugPort = null; - String srcdir; - - int width; - int height; - String embeddedWidth = null; - String embeddedHeight = null; - - String appName; - String codebase; - - @Deprecated final boolean embedCertificates = false; - boolean allPermissions = false; - String updateMode = "background"; - boolean isExtension = false; - boolean isSwingApp = false; boolean jreInstaller = false; - Boolean needShortcut = null; - Boolean needMenu = null; - Boolean needInstall = null; - String outfile; - // if true then we cobundle js and image files needed - // for web deployment with the application - boolean includeDT; - String placeholder = "'javafx-app-placeholder'"; String appId = null; - // didn't have a setter... - boolean offlineAllowed = true; - - String jrePlatform = System.getProperty("java.version")+"+"; - File javaRuntimeToUse = null; - boolean javaRuntimeWasSet = false; - // list of jvm args // (in theory string can contain spaces and need to be escaped List jvmargs = new LinkedList<>(); @@ -121,17 +91,6 @@ // raw arguments to the bundler Map bundlerArguments = new LinkedHashMap<>(); - String fallbackApp = null; - - public void setJavaRuntimeSource(File src) { - javaRuntimeToUse = src; - javaRuntimeWasSet = true; - } - - public void setCodebase(String codebase) { - this.codebase = codebase; - } - public void setId(String id) { this.id = id; } @@ -172,43 +131,6 @@ this.signBundle = signBundle; } - public void setJRE(String v) { - jrePlatform = v; - } - - public void setSwingAppWithEmbeddedJavaFX(boolean v) { - isSwingApp = v; - } - - public void setNeedInstall(boolean b) { - needInstall = b; - } - - public void setOfflineAllowed(boolean b) { - offlineAllowed = b; - } - - public void setNeedShortcut(Boolean b) { - needShortcut = b; - } - - public void setEmbeddedDimensions(String w, String h) { - embeddedWidth = w; - embeddedHeight = h; - } - - public void setFallback(String v) { - if (v == null) { - return; - } - - if ("none".equals(v) || "null".equals(v)) { - fallbackApp = null; - } else { - fallbackApp = v; - } - } - public void addJvmArg(String v) { jvmargs.add(v); } @@ -217,14 +139,6 @@ properties.put(n, v); } - public void setAllPermissions(boolean allPermissions) { - this.allPermissions = allPermissions; - } - - public void setAppName(String appName) { - this.appName = appName; - } - public void setArguments(List args) { this.arguments = args; } @@ -259,10 +173,6 @@ return this.modulePath; } - public void setSrcdir(String srcdir) { - this.srcdir = srcdir; - } - public void setModulePath(String value) { this.modulePath = value; } @@ -279,26 +189,14 @@ this.stripNativeCommands = value; } - public void setDetectModules(boolean value) { - this.detectmods = value; - } - public void setDescription(String description) { this.description = description; } - public void setPlaceholder(String p) { - placeholder = p; - } - public void setAppId(String id) { appId = id; } - public void setHeight(int height) { - this.height = height; - } - public void setOutfile(String outfile) { this.outfile = outfile; } @@ -307,18 +205,10 @@ this.params = params; } - public void setPreloader(String preloader) { - this.preloader = preloader; - } - public void setTitle(String title) { this.title = title; } - public void setUpdateMode(String updateMode) { - this.updateMode = updateMode; - } - public void setVendor(String vendor) { this.vendor = vendor; } @@ -327,22 +217,10 @@ this.email = email; } - public void setWidth(int width) { - this.width = width; - } - - public void setExtension(boolean isExtension) { - this.isExtension = isExtension; - } - public void setApplicationClass(String applicationClass) { this.applicationClass = applicationClass; } - public void setIncludeDT(boolean doEmbed) { - includeDT = doEmbed; - } - public void setJreInstaller(boolean value) { jreInstaller = value; } @@ -362,13 +240,13 @@ } // we need to expand as in some cases - // (most notably javapackager) + // (most notably jpackager) // we may get "." as filename and assumption is we include // everything in the given folder // (IOUtils.copyfiles() have recursive behavior) List expandFileset(File root) { List files = new LinkedList<>(); - if (jdk.packager.internal.IOUtils.isNotSymbolicLink(root)) { + if (!Files.isSymbolicLink(root.toPath())) { if (root.isDirectory()) { File[] children = root.listFiles(); if (children != null) { @@ -412,43 +290,6 @@ baseDir, new LinkedHashSet<>(expandFileset(file)))); } - public void addResource(File baseDir, String path, String type) { - addResource(baseDir, createFile(baseDir, path), type); - } - - public void addResource(File baseDir, File file, String type) { - addResource(baseDir, file, "eager", type, null, null); - } - - public void addResource(File baseDir, File file, String mode, - String type, String os, String arch) { - Set singleFile = new LinkedHashSet<>(); - singleFile.add(file); - if (baseDir == null) { - baseDir = file.getParentFile(); - } - RelativeFileSet rfs = new RelativeFileSet(baseDir, singleFile); - rfs.setArch(arch); - rfs.setMode(mode); - rfs.setOs(os); - rfs.setType(parseTypeFromString(type, file)); - resources.add(rfs); - } - - private RelativeFileSet.Type parseTypeFromString(String type, File file) { - if (type == null) { - if (file.getName().endsWith(".jar")) { - return RelativeFileSet.Type.jar; - } else if (file.getName().endsWith(".jnlp")) { - return RelativeFileSet.Type.jnlp; - } else { - return RelativeFileSet.Type.UNKNOWN; - } - } else { - return RelativeFileSet.Type.valueOf(type); - } - } - private static File createFile(final File baseDir, final String path) { final File testFile = new File(path); return testFile.isAbsolute() ? @@ -482,12 +323,14 @@ throw new PackagerException("ERR_MissingArgument", "--class"); } if (!hasMain) { - throw new PackagerException("ERR_MissingArgument", "--main-jar"); + throw new PackagerException("ERR_MissingArgument", + "--main-jar"); } } // Validate app image if set - String appImage = (String)bundlerArguments.get(Arguments.CLIOptions.PREDEFINED_APP_IMAGE.getId()); + String appImage = (String)bundlerArguments.get( + Arguments.CLIOptions.PREDEFINED_APP_IMAGE.getId()); if (appImage != null) { File appImageDir = new File(appImage); if (!appImageDir.exists()) { @@ -495,7 +338,8 @@ } File appImageAppDir = new File(appImage + File.separator + "app"); - File appImageRuntimeDir = new File(appImage + File.separator + "runtime"); + File appImageRuntimeDir = new File(appImage + + File.separator + "runtime"); if (!appImageAppDir.exists() || !appImageRuntimeDir.exists()) { throw new PackagerException("ERR_AppImageInvalid", appImage); } @@ -553,8 +397,7 @@ StandardBundlerParam.MODULE_PATH.getID(), StandardBundlerParam.ADD_MODULES.getID(), StandardBundlerParam.LIMIT_MODULES.getID(), - StandardBundlerParam.FILE_ASSOCIATIONS.getID(), - JLinkBundlerHelper.DETECT_MODULES.getID() + StandardBundlerParam.FILE_ASSOCIATIONS.getID() )); @SuppressWarnings("unchecked") @@ -586,33 +429,11 @@ String currentOS = System.getProperty("os.name").toLowerCase(); String currentArch = getArch(); - for (RelativeFileSet rfs : resources) { - String os = rfs.getOs(); - String arch = rfs.getArch(); - //skip resources for other OS - // and nativelib jars (we are including raw libraries) - if ((os == null || currentOS.contains(os.toLowerCase())) && - (arch == null || - currentArch.startsWith(arch.toLowerCase())) && - rfs.getType() != RelativeFileSet.Type.nativelib) { - if (rfs.getType() == RelativeFileSet.Type.license) { - for (String s : rfs.getIncludedFiles()) { - bundleParams.addLicenseFile(s); - } - } - } - } - bundleParams.setAppResourcesList(resources); bundleParams.setIdentifier(id); - if (javaRuntimeWasSet) { - bundleParams.setRuntime(javaRuntimeToUse); - } bundleParams.setApplicationClass(applicationClass); - bundleParams.setPrelaoderClass(preloader); - bundleParams.setName(this.appName); bundleParams.setAppVersion(version); bundleParams.setType(bundleType); bundleParams.setBundleFormat(targetFormat); @@ -643,8 +464,6 @@ bundleParams.setStripNativeCommands(stripNativeCommands); } - bundleParams.setSrcDir(srcdir); - if (modulePath != null && !modulePath.isEmpty()) { bundleParams.setModulePath(modulePath); } @@ -657,10 +476,6 @@ bundleParams.setDebug(debugPort); } - if (detectmods != null) { - bundleParams.setDetectMods(detectmods); - } - Map paramsMap = new TreeMap<>(); if (params != null) { for (Param p : params) { diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java Wed Oct 17 13:50:11 2018 -0400 @@ -52,7 +52,7 @@ * */ public class EnumeratedBundlerParam extends BundlerParamInfo { - // Not sure if this is the correct order, my idea is that from and IDE's + // Not sure if this is the correct order, my idea is that from IDE // perspective the string to display to the user is the key and then the // value is some type of object (although probably a String in most cases) private final Map elements; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java Wed Oct 17 13:50:11 2018 -0400 @@ -37,7 +37,6 @@ import java.util.ArrayList; import java.util.List; - public class IOUtils { public static void deleteRecursive(File path) throws IOException { @@ -166,7 +165,7 @@ return foldersize; } - //run "launcher paramfile" in the directory where paramfile is kept + // run "launcher paramfile" in the directory where paramfile is kept public static void run(String launcher, File paramFile, boolean verbose) throws IOException { if (paramFile != null && paramFile.exists()) { @@ -287,39 +286,4 @@ return ret; } - - // no good test if we are running pre-JRE7 - // use heuristic approach - // "false positive" is better than wrong answer - public static boolean isNotSymbolicLink(File file) { - //no symlinks on windows - if (Platform.getPlatform() == Platform.WINDOWS) { - return true; - } - try { - if (file == null || file.getParent() == null) { - return false; - } - File file_canonical = new File( - file.getParentFile().getCanonicalFile(), file.getName()); - if (file_canonical.getCanonicalFile().equals( - file_canonical.getAbsoluteFile())) { - return true; - } - } catch (IOException ioe) {} - return false; - } - - public static byte[] readFully(File f) throws IOException { - InputStream inp = new FileInputStream(f); - // read fully into memory - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - byte[] buffer = new byte[1024]; - int length; - while ((length = inp.read(buffer)) != -1) { - baos.write(buffer, 0, length); - } - baos.close(); - return baos.toByteArray(); - } } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,6 @@ package jdk.packager.internal; - public class InvalidBundlerParamException extends RuntimeException { public InvalidBundlerParamException(String message) { super(message); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,6 @@ package jdk.packager.internal; - import java.io.File; import java.io.IOException; import java.io.StringReader; @@ -49,7 +48,6 @@ import jdk.packager.internal.builders.AbstractAppImageBuilder; import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder; - public final class JLinkBundlerHelper { private static final ResourceBundle I18N = ResourceBundle.getBundle( @@ -57,39 +55,11 @@ private static final String JRE_MODULES_FILENAME = "jdk/packager/internal/resources/jre.list"; private static final String SERVER_JRE_MODULES_FILENAME = - "jdk/packager/internal/resources/server.jre.list"; + "jdk/packager/internal/resources/jre.module.list"; private JLinkBundlerHelper() {} @SuppressWarnings("unchecked") - public static final BundlerParamInfo DETECT_MODULES = - new StandardBundlerParam<>( - I18N.getString("param.detect-modules.name"), - I18N.getString("param.detect-modules.description"), - "detect-modules", - Boolean.class, - p -> Boolean.FALSE, - (s, p) -> Boolean.valueOf(s)); - - @SuppressWarnings("unchecked") - public static final BundlerParamInfo> JLINK_OPTIONS = - new StandardBundlerParam<>( - I18N.getString("param.jlink-options.name"), - I18N.getString("param.jlink-options.description"), - "jlinkOptions", - (Class>) (Object) Map.class, - p -> Collections.emptyMap(), - (s, p) -> { - try { - Properties props = new Properties(); - props.load(new StringReader(s)); - return new LinkedHashMap<>((Map)props); - } catch (IOException e) { - return new LinkedHashMap<>(); - } - }); - - @SuppressWarnings("unchecked") public static final BundlerParamInfo JLINK_BUILDER = new StandardBundlerParam<>( I18N.getString("param.jlink-builder.name"), @@ -277,30 +247,30 @@ Path outputDir = imageBuilder.getRoot(); String excludeFileList = imageBuilder.getExcludeFileList(); File mainJar = getMainJar(params); - Module.ModuleType mainJarType = Module.ModuleType.Unknown; + ModFile.ModType mainJarType = ModFile.ModType.Unknown; if (mainJar != null) { - mainJarType = new Module(mainJar).getModuleType(); + mainJarType = new ModFile(mainJar).getModType(); } else if (mainJar == null && StandardBundlerParam.MODULE.fetchFrom(params) == null) { // user specified only main class, all jars will be on the classpath - mainJarType = Module.ModuleType.UnnamedJar; + mainJarType = ModFile.ModType.UnnamedJar; } // Modules // The default for an unnamed jar is ALL_DEFAULT with the // non-redistributable modules removed. - if (mainJarType == Module.ModuleType.UnnamedJar) { + if (mainJarType == ModFile.ModType.UnnamedJar) { addModules.add(ModuleHelper.ALL_RUNTIME); - } else if (mainJarType == Module.ModuleType.Unknown || - mainJarType == Module.ModuleType.ModularJar) { + } else if (mainJarType == ModFile.ModType.Unknown || + mainJarType == ModFile.ModType.ModularJar) { String mainModule = getMainModule(params); addModules.add(mainModule); // Error if any of the srcfiles are modular jars. Set modularJars = - getResourceFileJarList(params, Module.JarType.ModularJar); + getResourceFileJarList(params, ModFile.JarType.ModularJar); if (!modularJars.isEmpty()) { throw new Exception(MessageFormat.format(I18N.getString( @@ -415,7 +385,7 @@ } private static Set getResourceFileJarList( - Map params, Module.JarType Query) { + Map params, ModFile.JarType Query) { Set files = new LinkedHashSet(); String srcdir = StandardBundlerParam.SOURCE_DIR.fetchFrom(params); @@ -432,19 +402,15 @@ break; } case ModularJar: { - Module module = new Module(new File(filename)); - - if (module.getModuleType() == - Module.ModuleType.ModularJar) { + ModFile mod = new ModFile(new File(filename)); + if (mod.getModType() == ModFile.ModType.ModularJar) { files.add(filename); } break; } case UnnamedJar: { - Module module = new Module(new File(filename)); - - if (module.getModuleType() == - Module.ModuleType.UnnamedJar) { + ModFile mod = new ModFile(new File(filename)); + if (mod.getModType() == ModFile.ModType.UnnamedJar) { files.add(filename); } break; @@ -461,15 +427,15 @@ List modulePath, Set modules) { Set result = new LinkedHashSet(); ModuleManager mm = new ModuleManager(modulePath); - List lmodules = + List lmodfiles = mm.getModules(EnumSet.of(ModuleManager.SearchType.ModularJar, ModuleManager.SearchType.Jmod, ModuleManager.SearchType.ExplodedModule)); - HashMap validModules = new HashMap<>(); + HashMap validModules = new HashMap<>(); - for (Module module : lmodules) { - validModules.put(module.getModuleName(), module); + for (ModFile modFile : lmodfiles) { + validModules.put(modFile.getModName(), modFile); } for (String name : modules) { @@ -541,14 +507,14 @@ private static Set getModuleNamesFromPath(List Value) { Set result = new LinkedHashSet(); ModuleManager mm = new ModuleManager(Value); - List modules = + List modFiles = mm.getModules( EnumSet.of(ModuleManager.SearchType.ModularJar, ModuleManager.SearchType.Jmod, ModuleManager.SearchType.ExplodedModule)); - for (Module module : modules) { - result.add(module.getModuleName()); + for (ModFile modFile : modFiles) { + result.add(modFile.getModName()); } return result; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/JPackagerToolProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/JPackagerToolProvider.java Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.packager.internal; + +import java.io.PrintWriter; +import java.util.spi.ToolProvider; + +public class JPackagerToolProvider implements ToolProvider { + + public String name() { + return "jpackager"; + } + + public synchronized int run( + PrintWriter out, PrintWriter err, String... args) { + try { + jdk.packager.main.Main.run(out, err, args); + } catch (Exception ignored) { + return 1; + } + return 0; + } +} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/JavaPackagerToolProvider.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/JavaPackagerToolProvider.java Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package jdk.packager.internal; - -import java.io.PrintWriter; -import java.util.spi.ToolProvider; - -public class JavaPackagerToolProvider implements ToolProvider { - - public String name() { - return "javapackager"; - } - - public synchronized int run( - PrintWriter out, PrintWriter err, String... args) { - try { - jdk.packager.Main.run(out, err, args); - } catch (Exception ignored) { - return 1; - } - return 0; - } -} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java Wed Oct 17 13:50:11 2018 -0400 @@ -26,10 +26,10 @@ package jdk.packager.internal; import java.io.File; +import java.nio.file.Files; import java.util.HashSet; import java.util.Set; - public class JreUtils { public static class Rule { @@ -113,7 +113,7 @@ File[] lst = root.listFiles(); if (lst != null) { for (File f : lst) { - if ((acceptSymlinks || IOUtils.isNotSymbolicLink(f)) && + if ((acceptSymlinks || !Files.isSymbolicLink(f.toPath())) && !shouldExclude(base, f, ruleset)) { if (f.isDirectory()) { walk(base, f, ruleset, files, acceptSymlinks); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/Log.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/Log.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/Log.java Wed Oct 17 13:50:11 2018 -0400 @@ -30,7 +30,6 @@ import java.io.PrintStream; import java.io.PrintWriter; - public class Log { public static class Logger { private boolean verbose = false; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/ModFile.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/ModFile.java Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.packager.internal; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +public final class ModFile { + private final String filename; + private final ModType moduleType; + + public enum JarType {All, UnnamedJar, ModularJar} + public enum ModType { + Unknown, UnnamedJar, ModularJar, Jmod, ExplodedModule} + + public ModFile(File aFile) { + super(); + filename = aFile.getPath(); + moduleType = getModType(aFile); + } + + public String getModName() { + File file = new File(getFileName()); + // do not try to remove extension for directories + return moduleType == ModType.ExplodedModule ? + file.getName() : getFileWithoutExtension(file.getName()); + } + + public String getFileName() { + return filename; + } + + public ModType getModType() { + return moduleType; + } + + private static ModType getModType(File aFile) { + ModType result = ModType.Unknown; + String filename = aFile.getAbsolutePath(); + + if (aFile.isFile()) { + if (filename.endsWith(".jmod")) { + result = ModType.Jmod; + } + else if (filename.endsWith(".jar")) { + JarType status = isModularJar(filename); + + if (status == JarType.ModularJar) { + result = ModType.ModularJar; + } + else if (status == JarType.UnnamedJar) { + result = ModType.UnnamedJar; + } + } + } + else if (aFile.isDirectory()) { + File moduleInfo = new File( + filename + File.separator + "module-info.class"); + + if (moduleInfo.exists()) { + result = ModType.ExplodedModule; + } + } + + return result; + } + + private static JarType isModularJar(String FileName) { + JarType result = JarType.All; + + try { + ZipInputStream zip = + new ZipInputStream(new FileInputStream(FileName)); + result = JarType.UnnamedJar; + + try { + for (ZipEntry entry = zip.getNextEntry(); entry != null; + entry = zip.getNextEntry()) { + if (entry.getName().matches("module-info.class")) { + result = JarType.ModularJar; + break; + } + } + + zip.close(); + } catch (IOException ex) { + } + } catch (FileNotFoundException e) { + } + + return result; + } + + private static String getFileWithoutExtension(String FileName) { + return FileName.replaceFirst("[.][^.]+$", ""); + } +} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/Module.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/Module.java Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package jdk.packager.internal; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - - -public final class Module { - private final String filename; - private final ModuleType moduleType; - - public enum JarType {All, UnnamedJar, ModularJar} - public enum ModuleType { - Unknown, UnnamedJar, ModularJar, Jmod, ExplodedModule} - - public Module(File AFile) { - super(); - filename = AFile.getPath(); - moduleType = getModuleType(AFile); - } - - public String getModuleName() { - File file = new File(getFileName()); - // do not try to remove extension for directories - return moduleType == ModuleType.ExplodedModule ? - file.getName() : getFileWithoutExtension(file.getName()); - } - - public String getFileName() { - return filename; - } - - public ModuleType getModuleType() { - return moduleType; - } - - private static ModuleType getModuleType(File AFile) { - ModuleType result = ModuleType.Unknown; - String filename = AFile.getAbsolutePath(); - - if (AFile.isFile()) { - if (filename.endsWith(".jmod")) { - result = ModuleType.Jmod; - } - else if (filename.endsWith(".jar")) { - JarType status = isModularJar(filename); - - if (status == JarType.ModularJar) { - result = ModuleType.ModularJar; - } - else if (status == JarType.UnnamedJar) { - result = ModuleType.UnnamedJar; - } - } - } - else if (AFile.isDirectory()) { - File moduleInfo = new File( - filename + File.separator + "module-info.class"); - - if (moduleInfo.exists()) { - result = ModuleType.ExplodedModule; - } - } - - return result; - } - - private static JarType isModularJar(String FileName) { - JarType result = JarType.All; - - try { - ZipInputStream zip = - new ZipInputStream(new FileInputStream(FileName)); - result = JarType.UnnamedJar; - - try { - for (ZipEntry entry = zip.getNextEntry(); entry != null; - entry = zip.getNextEntry()) { - if (entry.getName().matches("module-info.class")) { - result = JarType.ModularJar; - break; - } - } - - zip.close(); - } catch (IOException ex) { - } - } catch (FileNotFoundException e) { - } - - return result; - } - - private static String getFileWithoutExtension(String FileName) { - return FileName.replaceFirst("[.][^.]+$", ""); - } -} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java Wed Oct 17 13:50:11 2018 -0400 @@ -32,7 +32,6 @@ import java.util.EnumSet; import java.util.List; - public final class ModuleManager { private final List folders = new ArrayList(); @@ -63,14 +62,14 @@ } } - public List getModules() { + public List getModules() { return getModules(EnumSet.of(SearchType.UnnamedJar, SearchType.ModularJar, SearchType.Jmod, SearchType.ExplodedModule)); } - public List getModules(EnumSet Search) { - List result = new ArrayList(); + public List getModules(EnumSet Search) { + List result = new ArrayList(); for (String folder : folders) { result.addAll(getAllModulesInDirectory(folder, Search)); @@ -79,36 +78,36 @@ return result; } - private static List getAllModulesInDirectory(String Folder, + private static List getAllModulesInDirectory(String Folder, EnumSet Search) { - List result = new ArrayList(); + List result = new ArrayList(); File lfolder = new File(Folder); File[] files = lfolder.listFiles(); for (File file : files) { - Module module = new Module(file); + ModFile modFile = new ModFile(file); - switch (module.getModuleType()) { + switch (modFile.getModType()) { case Unknown: break; case UnnamedJar: if (Search.contains(SearchType.UnnamedJar)) { - result.add(module); + result.add(modFile); } break; case ModularJar: if (Search.contains(SearchType.ModularJar)) { - result.add(module); + result.add(modFile); } break; case Jmod: if (Search.contains(SearchType.Jmod)) { - result.add(module); + result.add(modFile); } break; case ExplodedModule: if (Search.contains(SearchType.ExplodedModule)) { - result.add(module); + result.add(modFile); } break; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java Wed Oct 17 13:50:11 2018 -0400 @@ -28,7 +28,6 @@ import java.text.MessageFormat; import java.util.ResourceBundle; - public class PackagerException extends Exception { private static final ResourceBundle bundle = ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle"); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/Param.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/Param.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/Param.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,6 @@ package jdk.packager.internal; - public class Param { String name; String value; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/Platform.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/Platform.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/Platform.java Wed Oct 17 13:50:11 2018 -0400 @@ -37,17 +37,17 @@ * * switch(platform) { * case Platform.MAC: { - * //TODO Do something + * // Do something * break; * } * case Platform.WINDOWS: * case Platform.LINUX: { - * //TODO Do something else + * // Do something else * } * } * */ -public enum Platform {UNKNOWN, WINDOWS, LINUX, MAC, SOLARIS; +public enum Platform {UNKNOWN, WINDOWS, LINUX, MAC; private static final Platform platform; private static final int majorVersion; private static final int minorVersion; @@ -64,9 +64,6 @@ else if (os.indexOf("mac") >= 0) { platform = Platform.MAC; } - else if (os.indexOf("sunos") >= 0 || os.indexOf("solaris") >= 0) { - platform = Platform.SOLARIS; - } else { platform = Platform.UNKNOWN; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java Wed Oct 17 13:50:11 2018 -0400 @@ -32,14 +32,10 @@ import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.Optional; - -import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder; - import java.lang.module.ModuleDescriptor; import java.lang.module.ModuleFinder; import java.lang.module.ModuleReference; import java.lang.module.ModuleReader; - import java.nio.file.Path; import java.util.HashSet; import java.util.LinkedHashSet; @@ -47,6 +43,7 @@ import java.util.NoSuchElementException; import java.util.Set; +import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder; public final class RedistributableModules { private static final String JDK_PACKAGER_MODULE = "jdk.packager"; @@ -129,10 +126,10 @@ Set limitModules) { String result = ""; - Module module = new Module(moduleFile); + ModFile modFile = new ModFile(moduleFile); ModuleFinder finder = AppRuntimeImageBuilder.moduleFinder(modulePath, addModules, limitModules); - Optional mref = finder.find(module.getModuleName()); + Optional mref = finder.find(modFile.getModName()); if (mref.isPresent()) { ModuleDescriptor descriptor = mref.get().descriptor(); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java Wed Oct 17 13:50:11 2018 -0400 @@ -26,19 +26,12 @@ package jdk.packager.internal; import java.io.File; - import java.util.Collection; import java.util.LinkedHashSet; import java.util.Set; - public class RelativeFileSet { - public enum Type { - UNKNOWN, jnlp, jar, nativelib, icon, license, data - } - - private Type type = Type.UNKNOWN; private String mode; private String os; private String arch; @@ -47,7 +40,6 @@ private Set files = new LinkedHashSet<>(); public RelativeFileSet(RelativeFileSet copy) { - type = copy.type; mode = copy.mode; os = copy.os; arch = copy.arch; @@ -65,7 +57,7 @@ " does not belong to " + baseAbsolute); } if (!absolute.equals(baseAbsolute)) { - // possible in javapackager case + // possible in jpackager case this.files.add(absolute.substring(baseAbsolute.length()+1)); } } @@ -102,7 +94,7 @@ if (files.contains(requiredFile)) { return true; } else { - Log.debug(" RelativeFileSet does not contain [" + requiredFile + "]"); + Log.debug("RelativeFileSet does not contain [" +requiredFile+ "]"); return false; } } @@ -123,14 +115,6 @@ Log.verbose("\n========"); } - public Type getType() { - return type; - } - - public void setType(Type type) { - this.type = type; - } - public String getMode() { return mode; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java Wed Oct 17 13:50:11 2018 -0400 @@ -74,7 +74,8 @@ putUnlessNull(bundleParams, Arguments.CLIOptions.WIN_SHORTCUT_HINT.getId(), getOptionValue(CLIOptions.WIN_SHORTCUT_HINT)); - putUnlessNull(bundleParams, Arguments.CLIOptions.WIN_CONSOLE_HINT.getId(), + putUnlessNull(bundleParams, + Arguments.CLIOptions.WIN_CONSOLE_HINT.getId(), getOptionValue(CLIOptions.WIN_CONSOLE_HINT)); putUnlessNull(bundleParams, Arguments.CLIOptions.SINGLETON.getId(), getOptionValue(CLIOptions.SINGLETON)); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java Wed Oct 17 13:50:11 2018 -0400 @@ -26,6 +26,7 @@ package jdk.packager.internal; import jdk.packager.internal.bundlers.BundleParams; +import jdk.packager.internal.builders.AbstractAppImageBuilder; import java.io.File; import java.io.IOException; @@ -55,7 +56,6 @@ import java.util.jar.Manifest; import java.util.regex.Pattern; import java.util.stream.Collectors; -import jdk.packager.internal.builders.AbstractAppImageBuilder; public class StandardBundlerParam extends BundlerParamInfo { @@ -146,7 +146,7 @@ (s, p) -> getMainJar(s, p) ); - // TODO: remove it + // TODO: test CLASSPATH jar manifest Attributet public static final StandardBundlerParam CLASSPATH = new StandardBundlerParam<>( I18N.getString("param.classpath.name"), @@ -396,17 +396,6 @@ (s, p) -> s ); - // TODO: remove it? - public static final StandardBundlerParam PRELOADER_CLASS = - new StandardBundlerParam<>( - I18N.getString("param.preloader.name"), - I18N.getString("param.preloader.description"), - "preloader", - String.class, - p -> null, - null - ); - public static final StandardBundlerParam VERBOSE = new StandardBundlerParam<>( I18N.getString("param.verbose.name"), diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,5 +25,5 @@ package jdk.packager.internal; - -public class UnsupportedPlatformException extends Exception {} +public class UnsupportedPlatformException extends Exception { +} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java Wed Oct 17 13:50:11 2018 -0400 @@ -22,6 +22,7 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ + package jdk.packager.internal; import java.util.HashMap; @@ -30,7 +31,6 @@ import java.util.Set; import jdk.packager.internal.Arguments.CLIOptions; - public class ValidOptions { private ValidOptions() {}; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,11 +25,11 @@ package jdk.packager.internal.builders; - import jdk.packager.internal.IOUtils; - import jdk.packager.internal.Log; import jdk.packager.internal.StandardBundlerParam; +import jdk.packager.internal.JLinkBundlerHelper; +import jdk.packager.internal.ModFile; import java.io.ByteArrayOutputStream; import java.io.File; @@ -43,18 +43,16 @@ import java.util.List; import java.util.Map; import java.util.ResourceBundle; +import java.util.ArrayList; import static jdk.packager.internal.StandardBundlerParam.*; import static jdk.packager.internal.StandardBundlerParam.ARGUMENTS; -import java.util.ArrayList; -import jdk.packager.internal.JLinkBundlerHelper; -import jdk.packager.internal.Module; - public abstract class AbstractAppImageBuilder { private static final ResourceBundle I18N = - ResourceBundle.getBundle("jdk.packager.internal.resources.builders.AbstractAppImageBuilder"); + ResourceBundle.getBundle( + "jdk.packager.internal.resources.builders.AbstractAppImageBuilder"); //do not use file separator - // we use it for classpath lookup and there / are not platform specific @@ -64,7 +62,8 @@ private final Path root; protected List excludeFileList = new ArrayList<>(); - public AbstractAppImageBuilder(Map properties, Path root) throws IOException { + public AbstractAppImageBuilder(Map properties, + Path root) throws IOException { this.properties = properties; this.root = root; excludeFileList.add(".*\\.diz"); @@ -83,20 +82,11 @@ } public String getExcludeFileList() { - String result = ""; - - for (String item : excludeFileList) { - if (!result.isEmpty()) { - result += ","; - } - - result += item; - } - - return result; + return String.join(",", excludeFileList); } - protected void copyEntry(Path appDir, File srcdir, String fname) throws IOException { + protected void copyEntry(Path appDir, File srcdir, String fname) + throws IOException { Path dest = appDir.resolve(fname); Files.createDirectories(dest.getParent()); File src = new File(srcdir, fname); @@ -108,8 +98,8 @@ } protected InputStream locateResource(String publicName, String category, - String defaultName, File customFile, - boolean verbose, File publicRoot) throws IOException { + String defaultName, File customFile, + boolean verbose, File publicRoot) throws IOException { InputStream is = null; boolean customFromClasspath = false; boolean customFromFile = false; @@ -131,29 +121,42 @@ if (is == null && defaultName != null) { is = getResourceAsStream(defaultName); } - String msg = null; - if (customFromClasspath) { - msg = MessageFormat.format(I18N.getString("message.using-custom-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName); - } else if (customFromFile) { - msg = MessageFormat.format(I18N.getString("message.using-custom-resource-from-file"), category == null ? "" : "[" + category + "] ", customFile.getAbsoluteFile()); - } else if (is != null) { - msg = MessageFormat.format(I18N.getString("message.using-default-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName); - } else { - msg = MessageFormat.format(I18N.getString("message.using-default-resource"), category == null ? "" : "[" + category + "] ", publicName); - } if (verbose) { - Log.info(msg); + String msg = null; + if (customFromClasspath) { + msg = MessageFormat.format(I18N.getString( + "message.using-custom-resource-from-classpath"), + category == null ? "" : "[" + category + "] ", publicName); + } else if (customFromFile) { + msg = MessageFormat.format(I18N.getString( + "message.using-custom-resource-from-file"), + category == null ? "" : "[" + category + "] ", + customFile.getAbsoluteFile()); + } else if (is != null) { + msg = MessageFormat.format(I18N.getString( + "message.using-default-resource-from-classpath"), + category == null ? "" : "[" + category + "] ", publicName); + } else { + msg = MessageFormat.format(I18N.getString( + "message.using-default-resource"), + category == null ? "" : "[" + category + "] ", publicName); + } + if (msg != null) { + Log.info(msg); + } } return is; } protected String preprocessTextResource(String publicName, String category, - String defaultName, Map pairs, - boolean verbose, File publicRoot) throws IOException { - InputStream inp = locateResource(publicName, category, defaultName, null, verbose, publicRoot); + String defaultName, Map pairs, + boolean verbose, File publicRoot) throws IOException { + InputStream inp = locateResource(publicName, category, + defaultName, null, verbose, publicRoot); if (inp == null) { - throw new RuntimeException("Module corrupt? No "+defaultName+" resource!"); + throw new RuntimeException( + "Module corrupt? No "+defaultName+" resource!"); } try (InputStream is = inp) { @@ -176,14 +179,15 @@ } } - public void writeCfgFile(Map params, File cfgFileName, String runtimeLocation) throws IOException { + public void writeCfgFile(Map params, + File cfgFileName, String runtimeLocation) throws IOException { cfgFileName.delete(); File mainJar = JLinkBundlerHelper.getMainJar(params); - Module.ModuleType mainJarType = Module.ModuleType.Unknown; + ModFile.ModType mainJarType = ModFile.ModType.Unknown; if (mainJar != null) { - mainJarType = new Module(mainJar).getModuleType(); + mainJarType = new ModFile(mainJar).getModType(); } String mainModule = StandardBundlerParam.MODULE.fetchFrom(params); @@ -196,23 +200,28 @@ out.println("app.preferences.id=" + PREFERENCES_ID.fetchFrom(params)); out.println("app.runtime=" + runtimeLocation); out.println("app.identifier=" + IDENTIFIER.fetchFrom(params)); - out.println("app.classpath=" + String.join(File.pathSeparator, CLASSPATH.fetchFrom(params).split("[ :;]"))); - out.println("app.application.instance=" + (SINGLETON.fetchFrom(params) ? "single" : "multiple")); + out.println("app.classpath=" + String.join(File.pathSeparator, + CLASSPATH.fetchFrom(params).split("[ :;]"))); + out.println("app.application.instance=" + + (SINGLETON.fetchFrom(params) ? "single" : "multiple")); // The main app is required to be a jar, modular or unnamed. if (mainModule != null && - (mainJarType == Module.ModuleType.Unknown || - mainJarType == Module.ModuleType.ModularJar)) { + (mainJarType == ModFile.ModType.Unknown || + mainJarType == ModFile.ModType.ModularJar)) { out.println("app.mainmodule=" + mainModule); } else { String mainClass = JLinkBundlerHelper.getMainClass(params); // If the app is contained in an unnamed jar then launch it the - // legacy way and the main class string must be of the format com/foo/Main + // legacy way and the main class string must be + // of the format com/foo/Main if (mainJar != null) { - out.println("app.mainjar=" + mainJar.toPath().getFileName().toString()); + out.println("app.mainjar=" + + mainJar.toPath().getFileName().toString()); } if (mainClass != null) { - out.println("app.mainclass=" + mainClass.replaceAll("\\.", "/")); + out.println("app.mainclass=" + + mainClass.replaceAll("\\.", "/")); } } @@ -222,12 +231,16 @@ out.println("app.java.version=" + version); } - out.println("packager.java.version=" + System.getProperty("java.version")); + out.println("packager.java.version=" + + System.getProperty("java.version")); Integer port = JLinkBundlerHelper.DEBUG.fetchFrom(params); if (port != null) { - out.println("app.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:" + port); + out.println( + "app.debug=-agentlib:jdwp=transport=dt_socket," + + "server=y,suspend=y,address=localhost:" + + port); } out.println(); @@ -240,16 +253,13 @@ for (Map.Entry property : jvmProps.entrySet()) { out.println("-D" + property.getKey() + "=" + property.getValue()); } - String preloader = PRELOADER_CLASS.fetchFrom(params); - if (preloader != null) { - out.println("-Djavafx.preloader="+preloader); - } out.println(); out.println("[ArgOptions]"); List args = ARGUMENTS.fetchFrom(params); for (String arg : args) { - if (arg.endsWith("=") && (arg.indexOf("=") == arg.lastIndexOf("="))) { + if (arg.endsWith("=") && + (arg.indexOf("=") == arg.lastIndexOf("="))) { out.print(arg.substring(0, arg.length() - 1)); out.println("\\="); } else { @@ -265,5 +275,4 @@ return null; } - protected abstract String getCacheLocation(Map params); } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java Wed Oct 17 13:50:11 2018 -0400 @@ -27,6 +27,7 @@ import jdk.packager.internal.*; import jdk.packager.internal.bundlers.Bundler.BundleType; +import jdk.packager.internal.JLinkBundlerHelper; import java.io.File; import java.io.IOException; @@ -37,70 +38,76 @@ import static jdk.packager.internal.StandardBundlerParam.*; -import jdk.packager.internal.JLinkBundlerHelper; - - public class BundleParams { final protected Map params; - public static final String PARAM_RUNTIME = "runtime"; // RelativeFileSet - public static final String PARAM_APP_RESOURCES = "appResources"; // RelativeFileSet - public static final String PARAM_TYPE = "type"; // BundlerType - public static final String PARAM_BUNDLE_FORMAT = "bundleFormat"; // String - public static final String PARAM_ICON = "icon"; // String + // RelativeFileSet + public static final String PARAM_APP_RESOURCES = "appResources"; - /* Name of bundle file and native launcher */ - public static final String PARAM_NAME = "name"; // String + // BundlerType + public static final String PARAM_TYPE = "type"; + + // String + public static final String PARAM_BUNDLE_FORMAT = "bundleFormat"; + // String + public static final String PARAM_ICON = "icon"; - /* application vendor, used by most of the bundlers */ - public static final String PARAM_VENDOR = "vendor"; // String + // String - Name of bundle file and native launcher + public static final String PARAM_NAME = "name"; - /* email name and email, only used for debian */ - public static final String PARAM_EMAIL = "email"; // String + // String - application vendor, used by most of the bundlers + public static final String PARAM_VENDOR = "vendor"; - /* Copyright. Used on Mac */ - public static final String PARAM_COPYRIGHT = "copyright"; // String + // String - email name and email, only used for debian */ + public static final String PARAM_EMAIL = "email"; - /* GUID on windows for MSI, CFBundleIdentifier on Mac - If not compatible with requirements then bundler either do not bundle - or autogenerate */ - public static final String PARAM_IDENTIFIER = "identifier"; // String + /* String - Copyright. Used on Mac */ + public static final String PARAM_COPYRIGHT = "copyright"; - /* shortcut preferences */ - public static final String PARAM_SHORTCUT = "shortcutHint"; // boolean - public static final String PARAM_MENU = "menuHint"; // boolean + // String - GUID on windows for MSI, CFBundleIdentifier on Mac + // If not compatible with requirements then bundler either do not bundle + // or autogenerate + public static final String PARAM_IDENTIFIER = "identifier"; - /* Application version. Format may differ for different bundlers */ - public static final String PARAM_VERSION = "appVersion"; // String - /* Application category. Used at least on Mac/Linux. Value is platform specific */ - public static final String PARAM_CATEGORY = "applicationCategory"; // String + /* boolean - shortcut preferences */ + public static final String PARAM_SHORTCUT = "shortcutHint"; + // boolean - menu shortcut preference + public static final String PARAM_MENU = "menuHint"; - /* Optional short application */ - public static final String PARAM_TITLE = "title"; // String + // String - Application version. Format may differ for different bundlers + public static final String PARAM_VERSION = "appVersion"; - /* Optional application description. Used by MSI and on Linux */ - public static final String PARAM_DESCRIPTION = "description"; // String + // String - Application category. Used at least on Mac/Linux. + // Value is platform specific + public static final String PARAM_CATEGORY = "applicationCategory"; - /* License type. Needed on Linux (rpm) */ - public static final String PARAM_LICENSE_TYPE = "licenseType"; // String + // String - Optional short application + public static final String PARAM_TITLE = "title"; - /* File(s) with license. Format is OS/bundler specific */ - public static final String PARAM_LICENSE_FILE = "licenseFile"; // List + // String - Optional application description. Used by MSI and on Linux + public static final String PARAM_DESCRIPTION = "description"; + + // String - License type. Needed on Linux (rpm) + public static final String PARAM_LICENSE_TYPE = "licenseType"; - /* service/daemon install. - null means "default" */ - public static final String PARAM_SERVICE_HINT = "serviceHint"; // Boolean + // List - File(s) with license. Format is OS/bundler specific + public static final String PARAM_LICENSE_FILE = "licenseFile"; + + // boolean - service/daemon install. null means "default" + public static final String PARAM_SERVICE_HINT = "serviceHint"; - /* Main application class. Not used directly but used to derive default values */ - public static final String PARAM_APPLICATION_CLASS = "applicationClass"; // String + // String Main application class. + // Not used directly but used to derive default values + public static final String PARAM_APPLICATION_CLASS = "applicationClass"; - /* Adds a dialog to let the user choose a directory where the product will be installed. */ - public static final String PARAM_INSTALLDIR_CHOOSER = "installdirChooser"; // Boolean + // boolean - Adds a dialog to let the user choose a directory + // where the product will be installed. + public static final String PARAM_INSTALLDIR_CHOOSER = "installdirChooser"; - /* Prevents from launching multiple instances of application. */ - public static final String PARAM_SINGLETON = "singleton"; // Boolean + // boolean - Prevents from launching multiple instances of application. + public static final String PARAM_SINGLETON = "singleton"; /** * create a new bundle with all default values @@ -126,18 +133,17 @@ } @SuppressWarnings("unchecked") - public C fetchParamWithDefault(Class klass, C defaultValue, String... keys) { + public C fetchParamWithDefault( + Class klass, C defaultValue, String... keys) { for (String key : keys) { Object o = params.get(key); if (klass.isInstance(o)) { return (C) o; - } - else if (params.containsKey(keys) && o == null) { + } else if (params.containsKey(key) && o == null) { return null; + } else if (o != null) { + Log.debug("Bundle param " + key + " is not type " + klass); } - //else if (o != null) { - //TODO log an error. - //} } return defaultValue; } @@ -146,7 +152,7 @@ return fetchParamWithDefault(klass, null, keys); } - //NOTE: we do not care about application parameters here + // NOTE: we do not care about application parameters here // as they will be embeded into jar file manifest and // java launcher will take care of them! @@ -175,15 +181,8 @@ } public void setStripNativeCommands(boolean value) { - putUnlessNull(StandardBundlerParam.STRIP_NATIVE_COMMANDS.getID(), value); - } - - public void setDetectMods(boolean value) { - putUnlessNull(JLinkBundlerHelper.DETECT_MODULES.getID(), value); - } - - public void setSrcDir(String value) { - putUnlessNull(SOURCE_DIR.getID(), value); + putUnlessNull(StandardBundlerParam.STRIP_NATIVE_COMMANDS.getID(), + value); } public void setModulePath(String value) { @@ -222,10 +221,6 @@ putUnlessNull(PARAM_APPLICATION_CLASS, applicationClass); } - public void setPrelaoderClass(String preloaderClass) { - putUnlessNull(PRELOADER_CLASS.getID(), preloaderClass); - } - public String getAppVersion() { return fetchParam(VERSION); } @@ -319,7 +314,8 @@ // - FX marker (jfxrt.jar) // - JDK marker (tools.jar) private static boolean checkJDKRoot(File jdkRoot) { - String exe = (Platform.getPlatform() == Platform.WINDOWS) ? ".exe" : ""; + String exe = (Platform.getPlatform() == Platform.WINDOWS) ? + ".exe" : ""; File javac = new File(jdkRoot, "bin/javac" + exe); if (!javac.exists()) { Log.verbose("javac is not found at " + javac.getAbsolutePath()); @@ -328,97 +324,12 @@ File jmods = new File(jdkRoot, "jmods"); if (!jmods.exists()) { - // old non-modular JDKs - File rtJar = new File(jdkRoot, "jre/lib/rt.jar"); - if (!rtJar.exists()) { - Log.verbose("rt.jar is not found at " + rtJar.getAbsolutePath()); - return false; - } - - File jfxJar = new File(jdkRoot, "jre/lib/ext/jfxrt.jar"); - if (!jfxJar.exists()) { - //Try again with new location - jfxJar = new File(jdkRoot, "jre/lib/jfxrt.jar"); - if (!jfxJar.exists()) { - Log.verbose("jfxrt.jar is not found at " + jfxJar.getAbsolutePath()); - return false; - } - } - - - File toolsJar = new File(jdkRoot, "lib/tools.jar"); - if (!toolsJar.exists()) { - Log.verbose("tools.jar is not found at " + toolsJar.getAbsolutePath()); - return false; - } + Log.verbose("jmods is not found in " + jdkRoot.getAbsolutePath()); + return false; } return true; } - //Depending on platform and user input we may get different "references" - //Should support - // - java.home - // - reference to JDK install folder - // - should NOT support JRE dir - //Note: input could be null (then we asked to use system JRE) - // or it must be valid directory - //Returns null on validation failure. Returns jre root if ok. - public static File validateRuntimeLocation(File javaHome) { - if (javaHome == null) { - return null; - } - - File jdkRoot; - File rtJar = new File(javaHome, "lib/rt.jar"); - - if (rtJar.exists()) { //must be "java.home" case - //i.e. we are in JRE folder - jdkRoot = javaHome.getParentFile(); - } else { //expect it to be root of JDK installation folder - //On Mac it could be jdk/ or jdk/Contents/Home - //Norm to jdk/Contents/Home for validation - if (Platform.getPlatform() == Platform.MAC) { - File f = new File(javaHome, "Contents/Home"); - if (f.exists() && f.isDirectory()) { - javaHome = f; - } - } - jdkRoot = javaHome; - } - - if (!checkJDKRoot(jdkRoot)) { - throw new RuntimeException( - "Can not find JDK artifacts in specified location: " - + javaHome.getAbsolutePath()); - } - - return new File(jdkRoot, "jre"); - } - - //select subset of given runtime using predefined rules - public void setRuntime(File baseDir) { - baseDir = validateRuntimeLocation(baseDir); - - //mistake or explicit intent to use system runtime - if (baseDir == null) { - Log.verbose("No Java runtime to embed. Package will need system Java."); - params.put(PARAM_RUNTIME, null); - return; - } - doSetRuntime(baseDir); - } - - //input dir "jdk/jre" (i.e. jre folder in the jdk) - private void doSetRuntime(File baseDir) { - params.put(PARAM_RUNTIME, baseDir.toString()); - } - - //Currently unused? - // - //public void setRuntime(RelativeFileSet fs) { - // runtime = fs; - //} - public jdk.packager.internal.RelativeFileSet getAppResource() { return fetchParam(APP_RESOURCES); } @@ -427,7 +338,8 @@ putUnlessNull(PARAM_APP_RESOURCES, fs); } - public void setAppResourcesList(List rfs) { + public void setAppResourcesList( + List rfs) { putUnlessNull(APP_RESOURCES_LIST.getID(), rfs); } @@ -473,11 +385,12 @@ private String mainJarClassPath = null; private boolean useFXPackaging = true; - //For regular executable Jars we need to take care of classpath - //For JavaFX executable jars we do not need to pay attention to ClassPath entry in manifest + // For regular executable Jars we need to take care of classpath + // For JavaFX executable jars we do not need to pay attention to + // ClassPath entry in manifest public String getAppClassPath() { if (mainJar == null) { - //this will find out answer + // this will find out answer getMainApplicationJar(); } if (useFXPackaging || mainJarClassPath == null) { @@ -486,13 +399,14 @@ return mainJarClassPath; } - //assuming that application was packaged according to the rules + // assuming that application was packaged according to the rules // we must have application jar, i.e. jar where we embed launcher // and have main application class listed as main class! - //If there are more than one, or none - it will be treated as deployment error + // If there are more than one, or none - it will be treated as + // deployment error // - //Note we look for both JavaFX executable jars and regular executable jars - //As long as main "application" entry point is the same it is main class + // Note we look for both JavaFX executable jars and regular executable jars + // As long as main "application" entry point is the same it is main class // (i.e. for FX jar we will use JavaFX manifest entry ...) public String getMainApplicationJar() { jdk.packager.internal.RelativeFileSet appResources = getAppResource(); @@ -502,7 +416,8 @@ File srcdir = appResources.getBaseDirectory(); JarFile jf = new JarFile(new File(srcdir, mainJar)); Manifest m = jf.getManifest(); - Attributes attrs = (m != null) ? m.getMainAttributes() : null; + Attributes attrs = (m != null) ? + m.getMainAttributes() : null; if (attrs != null) { setApplicationClass( attrs.getValue(Attributes.Name.MAIN_CLASS)); @@ -531,7 +446,8 @@ if (javaMain) { mainJar = fname; - mainJarClassPath = attrs.getValue(Attributes.Name.CLASS_PATH); + mainJarClassPath = attrs.getValue( + Attributes.Name.CLASS_PATH); return mainJar; } } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,6 @@ package jdk.packager.internal.bundlers; - public final class Bundler { private Bundler() {} @@ -35,9 +34,6 @@ */ public enum BundleType { NONE, - @Deprecated - ALL, // Generates all bundlers - NATIVE, // Generates both app image and all installers IMAGE, // Generates app image only INSTALLER // Generates installers } @@ -45,31 +41,6 @@ @Deprecated public static final class Bundle { public BundleType type = BundleType.NONE; - public String format = null; } - @Deprecated - static public Bundle stringToBundle(String value) { - Bundle result = new Bundle(); - - if (!value.isEmpty()) { - if ("false".equals(value) || "none".equals(value)) { - result.type = BundleType.NONE; - } else if ("all".equals(value) || "true".equals(value)) { - result.type = BundleType.ALL; - } else if ("image".equals(value)) { - result.type = BundleType.IMAGE; - } else if ("native".equals(value)) { - result.type = BundleType.NATIVE; - } else if ("installer".equals(value)) { - result.type = BundleType.INSTALLER; - } else { - //assume it is request to build only specific format (like exe or msi) - result.type = BundleType.INSTALLER; - result.format = (value != null) ? value.toLowerCase() : null; - } - } - - return result; - } } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.images-root.name= param.images-root.description= diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.images-root.name= param.images-root.description= diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.images-root.name= param.images-root.description= diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,8 +1,28 @@ -param.launcher-cfg-format.name=Launcher .cfg File Format -param.launcher-cfg-format.description=The file format of the .cfg file used by the launcher executable. Current values are 'ini' and 'prop'. - -error.jre-missing-file=Java Runtime does not include {0} -error.jre-missing-file.advice=Make sure ant is using Oracle JDK 8 or later. +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# error.no-application-class=Main application class is missing. error.no-application-class.advice=Please specify main application class. @@ -10,12 +30,3 @@ error.no-main-module=Main application module is missing. error.no-main-module.advice=Make sure to use fx\:module task to create modular application. -error.app-cds-bad-version=AppCDS Not Supported in Bundled Runtime. -error.app-cds-bad-version.advice=AppCDS support was added in 8u40. Use an 8u40 or later Java Runtime - -error.app-cds-requires-runtime=AppCDS Not Supported with System Runtime. -error.app-cds-requires-runtime.advice=AppCDS support requires that a runtime be bundled with the applicaiton. The use of a System JRE is not supported. - -error.app-cds-no-commercial-unlock=AppCDS Requires Commercial Features to be Unlocked. -error.app-cds-no-commercial-unlock.advice=Verify you have a license for commercial features for the Oracle Java Runtime the set the bundler argument 'commercialFeatures' to 'true'. - diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,18 +1,29 @@ -param.launcher-cfg-format.name=\u30e9\u30f3\u30c1\u30e3.cfg\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f -param.launcher-cfg-format.description=\u30e9\u30f3\u30c1\u30e3\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u308a\u4f7f\u7528\u3055\u308c\u308b.cfg\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3002\u73fe\u5728\u306e\u5024\u306f'ini'\u304a\u3088\u3073'prop'\u3067\u3059\u3002 - -error.jre-missing-file=Java\u30e9\u30f3\u30bf\u30a4\u30e0\u306b{0}\u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093 -error.jre-missing-file.advice=ant\u304cOracle JDK 8\u4ee5\u4e0a\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# error.no-main-module=\u30e1\u30a4\u30f3\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002 error.no-main-module.advice=fx:module\u30bf\u30b9\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e2\u30b8\u30e5\u30e9\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -error.app-cds-bad-version=AppCDS\u306f\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u30e9\u30f3\u30bf\u30a4\u30e0\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -error.app-cds-bad-version.advice=AppCDS\u306e\u30b5\u30dd\u30fc\u30c8\u306f8u40\u3067\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u30028u40\u4ee5\u4e0a\u306eJava\u30e9\u30f3\u30bf\u30a4\u30e0\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044 - -error.app-cds-requires-runtime=AppCDS\u306f\u30b7\u30b9\u30c6\u30e0\u30fb\u30e9\u30f3\u30bf\u30a4\u30e0\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -error.app-cds-requires-runtime.advice=AppCDS\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u306f\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b7\u30b9\u30c6\u30e0JRE\u306e\u4f7f\u7528\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 - -error.app-cds-no-commercial-unlock=AppCDS\u306b\u306f\u3001\u5546\u7528\u6a5f\u80fd\u306e\u30ed\u30c3\u30af\u89e3\u9664\u304c\u5fc5\u8981\u3067\u3059\u3002 -error.app-cds-no-commercial-unlock.advice=\u30d0\u30f3\u30c9\u30e9\u5f15\u6570'commercialFeatures'\u3092'true'\u306b\u8a2d\u5b9a\u3057\u305fOracle Java Runtime\u306e\u5546\u7528\u6a5f\u80fd\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 - diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,18 +1,30 @@ -param.launcher-cfg-format.name=\u542f\u52a8\u7a0b\u5e8f .cfg \u6587\u4ef6\u683c\u5f0f -param.launcher-cfg-format.description=\u542f\u52a8\u7a0b\u5e8f\u53ef\u6267\u884c\u6587\u4ef6\u4f7f\u7528\u7684 .cfg \u6587\u4ef6\u7684\u6587\u4ef6\u683c\u5f0f\u3002\u5f53\u524d\u503c\u4e3a 'ini' \u548c 'prop'\u3002 - -error.jre-missing-file=Java \u8fd0\u884c\u65f6\u4e0d\u5305\u62ec {0} -error.jre-missing-file.advice=\u786e\u4fdd ant \u4f7f\u7528\u7684\u662f Oracle JDK 8 \u6216\u66f4\u9ad8\u7248\u672c\u3002 +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# error.no-main-module=\u7f3a\u5c11\u4e3b\u5e94\u7528\u7a0b\u5e8f\u6a21\u5757\u3002 error.no-main-module.advice=\u786e\u4fdd\u4f7f\u7528 fx:module \u4efb\u52a1\u521b\u5efa\u6a21\u5757\u5316\u5e94\u7528\u7a0b\u5e8f\u3002 -error.app-cds-bad-version=\u6253\u5305\u7684\u8fd0\u884c\u65f6\u4e2d\u4e0d\u652f\u6301 AppCDS\u3002 -error.app-cds-bad-version.advice=8u40 \u4e2d\u65b0\u589e\u4e86 AppCDS \u652f\u6301\u3002\u8bf7\u4f7f\u7528 8u40 \u6216\u66f4\u9ad8\u7248\u672c\u7684 Java \u8fd0\u884c\u65f6 -error.app-cds-requires-runtime=\u7cfb\u7edf\u8fd0\u884c\u65f6\u4e2d\u4e0d\u652f\u6301 AppCDS\u3002 -error.app-cds-requires-runtime.advice=AppCDS \u652f\u6301\u9700\u8981\u5c06\u8fd0\u884c\u65f6\u968f\u5e94\u7528\u7a0b\u5e8f\u4e00\u8d77\u6253\u5305\u3002\u4e0d\u652f\u6301\u4f7f\u7528\u7cfb\u7edf JRE\u3002 - -error.app-cds-no-commercial-unlock=AppCDS \u9700\u8981\u5f00\u542f\u5546\u4e1a\u529f\u80fd\u3002 -error.app-cds-no-commercial-unlock.advice=\u786e\u4fdd\u60a8\u5177\u6709 Oracle Java \u8fd0\u884c\u65f6\u7684\u5546\u4e1a\u529f\u80fd\u8bb8\u53ef\u8bc1, \u5e76\u4e14\u5c06\u6253\u5305\u7a0b\u5e8f\u53c2\u6570 'commercialFeatures' \u8bbe\u7f6e\u4e3a 'true'\u3002 - diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.create-image.name=Create Image param.create-image.description=Creates platform-specific application image. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,45 +1,41 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + MSG_Version=jpackager version -ERR_UnknownArgument=Error: Unknown argument: {0} -ERR_UnknownCommand=Error: Unknown command: {0} -ERR_UnknownReason=Unknown reason ERR_MissingArgument=Error: Missing argument: {0} -ERR_EmbedingLauncher=Error: Missing embedded resource [{0}] -ERR_ContradictorySetting=Error: Ant script manifest argument ''{0}'' contradicts Ant script data type settings. -ERR_CreatingDirFailed=Error: Failed to create directory {0} -ERR_CreatingFileFailed=Error: Failed to create file {0} -ERR_CreatingTempFileFailed=Error: Failed to create temporary file -ERR_CreatingJarFailed=Error: Failed to create jar file {0} -ERR_FileCopyFailed=Error: Failed copy file to directory {0} -ERR_FileReadFailed=Error: Failed reading file {0} -ERR_CantDeleteFile=Error: File {0} could not be deleted. -ERR_MissingDirectory=Missing directory {0} -ERR_InvalidDirectory=Invalid directory {0} -ERR_EmptySourceDirectory=Empty source directory {0} -ERR_MissingJavaHome=Error: Java home directory is not known. -ERR_MissingJavaFxHome=Error: JavaFx home directory is not known. -ERR_JavacFailed=Error: javac execution failed, exit code: {0} -ERR_MakeAllJavacFailed=Error: compilation of java sources failed -ERR_DeployFailed=Error: deploy failed -ERR_InvalidStoreFile=Error: Invalid keystore file: {0} -ERR_SignFailed=Error: Signing failed ERR_MissingAppResources=Error: No application jars found -ERR_NoEmbeddedDT=Error: -includedt requires the java deployment toolkit, which is not included in this distribution ERR_AppImageNotExist=Error: App image directory "{0}" does not exist ERR_AppImageInvalid=Error: App image directory "{0}" is invalid and does not contain "app" and/or "runtime" sub-directories ERR_NoSecondaryLauncherName=Secondary Launchers require a name parameter. ERR_NoUniqueName=Secondary Launchers require a unique name parameter. ERR_NoJreInstallerName=Jre Installers require a name parameter. -MSG_UpdatingJar=Updating jar file\: {0} -MSG_NoJREPackaged=Package is configured to ship without a JRE. -MSG_UserProvidedJRE=Using base JDK at\: {0} -MSG_UseSystemJRE=No base JDK. Package will use system JRE. MSG_BundlerFailed=Error: Bundler "{1}" ({0}) failed to produce a bundle. MSG_BundlerPlatformException=Bundler {0} skipped because the bundler does not support bundling on this platform. MSG_BundlerConfigException=Bundler {0} skipped because of a configuration problem\: {1} \n\ Advice to fix\: {2} MSG_BundlerConfigExceptionNoAdvice=Bundler {0} skipped because of a configuration problem\: {1} MSG_BundlerRuntimeException=Bundler {0} failed because of {1} -MSG_JarNoSelfCopy=Skip jar copy to itself\: {0} -MSG_EnterKeystorePassword=Enter Passphrase for keystore: -MSG_EnterKeyPassword=Enter key password for %s: diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,39 +1,35 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + MSG_Version=Java\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3 -ERR_UnknownArgument=\u30A8\u30E9\u30FC: \u4E0D\u660E\u306A\u5F15\u6570: {0} -ERR_UnknownCommand=\u30A8\u30E9\u30FC: \u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: {0} -ERR_UnknownReason=\u7406\u7531\u306F\u4E0D\u660E\u3067\u3059 ERR_MissingArgument=\u30A8\u30E9\u30FC: \u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093: {0} -ERR_EmbedingLauncher=\u30A8\u30E9\u30FC: \u57CB\u8FBC\u307F\u30EA\u30BD\u30FC\u30B9[{0}]\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -ERR_ContradictorySetting=\u30A8\u30E9\u30FC: Ant\u30B9\u30AF\u30EA\u30D7\u30C8\u30FB\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5F15\u6570''{0}''\u306F\u3001Ant\u30B9\u30AF\u30EA\u30D7\u30C8\u30FB\u30C7\u30FC\u30BF\u578B\u8A2D\u5B9A\u3068\u77DB\u76FE\u3057\u3066\u3044\u307E\u3059\u3002 -ERR_CreatingDirFailed=\u30A8\u30E9\u30FC: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_CreatingFileFailed=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_CreatingTempFileFailed=\u30A8\u30E9\u30FC: \u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_CreatingJarFailed=\u30A8\u30E9\u30FC: jar\u30D5\u30A1\u30A4\u30EB{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_FileCopyFailed=\u30A8\u30E9\u30FC: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3078\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30B3\u30D4\u30FC\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_FileReadFailed=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_CantDeleteFile=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 -ERR_MissingDirectory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -ERR_InvalidDirectory=\u7121\u52B9\u306A\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0} -ERR_EmptySourceDirectory=\u30BD\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u7A7A\u3067\u3059 -ERR_MissingJavaHome=\u30A8\u30E9\u30FC: Java\u30DB\u30FC\u30E0\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u4E0D\u660E\u3067\u3059\u3002 -ERR_MissingJavaFxHome=\u30A8\u30E9\u30FC: JavaFx\u30DB\u30FC\u30E0\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u4E0D\u660E\u3067\u3059\u3002 -ERR_JavacFailed=\u30A8\u30E9\u30FC: javac\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u7D42\u4E86\u30B3\u30FC\u30C9: {0} -ERR_MakeAllJavacFailed=\u30A8\u30E9\u30FC: java\u30BD\u30FC\u30B9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_DeployFailed=\u30A8\u30E9\u30FC: \u30C7\u30D7\u30ED\u30A4\u306B\u5931\u6557\u3057\u307E\u3057\u305F -ERR_InvalidStoreFile=\u30A8\u30E9\u30FC: \u7121\u52B9\u306A\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB: {0} -ERR_SignFailed=\u30A8\u30E9\u30FC: \u7F72\u540D\u306B\u5931\u6557\u3057\u307E\u3057\u305F ERR_MissingAppResources=\u30A8\u30E9\u30FC: \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3jar\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F -ERR_NoEmbeddedDT=\u30A8\u30E9\u30FC: -includedt\u306B\u306F\u3001\u3053\u306E\u914D\u5E03\u306B\u542B\u307E\u308C\u3066\u3044\u306A\u3044Java Deployment Toolkit\u304C\u5FC5\u8981\u3067\u3059 -MSG_UpdatingJar=jar\u30D5\u30A1\u30A4\u30EB\u306E\u66F4\u65B0\u4E2D: {0} -MSG_NoJREPackaged=\u30D1\u30C3\u30B1\u30FC\u30B8\u306FJRE\u306A\u3057\u3067\u63D0\u4F9B\u3059\u308B\u3088\u3046\u69CB\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002 -MSG_UserProvidedJRE=\u6B21\u306B\u3042\u308B\u30D9\u30FC\u30B9JDK\u3092\u4F7F\u7528: {0} -MSG_UseSystemJRE=\u30D9\u30FC\u30B9JDK\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u30B7\u30B9\u30C6\u30E0JRE\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002 MSG_BundlerFailed=\u30A8\u30E9\u30FC: \u30D0\u30F3\u30C9\u30E9"{1}" ({0})\u304C\u30D0\u30F3\u30C9\u30EB\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002 MSG_BundlerPlatformException=\u30D0\u30F3\u30C9\u30E9{0}\u306F\u3053\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306E\u30D0\u30F3\u30C9\u30EB\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F\u3002 MSG_BundlerConfigException=\u69CB\u6210\u306E\u554F\u984C\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F: {1} \n\u6B21\u306E\u4FEE\u6B63\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044: {2} MSG_BundlerConfigExceptionNoAdvice=\u69CB\u6210\u306E\u554F\u984C\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F: {1} MSG_BundlerRuntimeException={1}\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u5931\u6557\u3057\u307E\u3057\u305F -MSG_JarNoSelfCopy=\u81EA\u8EAB\u3078\u306Ejar\u306E\u30B3\u30D4\u30FC\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059: {0} -MSG_EnterKeystorePassword=\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: -MSG_EnterKeyPassword=%s\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,39 +1,35 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + MSG_Version=Java \u6253\u5305\u7A0B\u5E8F\u7248\u672C -ERR_UnknownArgument=\u9519\u8BEF: \u672A\u77E5\u53C2\u6570: {0} -ERR_UnknownCommand=\u9519\u8BEF: \u672A\u77E5\u547D\u4EE4: {0} -ERR_UnknownReason=\u672A\u77E5\u539F\u56E0 ERR_MissingArgument=\u9519\u8BEF: \u7F3A\u5C11\u53C2\u6570: {0} -ERR_EmbedingLauncher=\u9519\u8BEF: \u7F3A\u5C11\u5D4C\u5165\u8D44\u6E90 [{0}] -ERR_ContradictorySetting=\u9519\u8BEF: Ant \u811A\u672C\u6E05\u5355\u53C2\u6570 ''{0}'' \u4E0E Ant \u811A\u672C\u6570\u636E\u7C7B\u578B\u8BBE\u7F6E\u51B2\u7A81\u3002 -ERR_CreatingDirFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u76EE\u5F55 {0} -ERR_CreatingFileFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6 {0} -ERR_CreatingTempFileFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u4E34\u65F6\u6587\u4EF6 -ERR_CreatingJarFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA jar \u6587\u4EF6 {0} -ERR_FileCopyFailed=\u9519\u8BEF: \u65E0\u6CD5\u5C06\u6587\u4EF6\u590D\u5236\u5230\u76EE\u5F55 {0} -ERR_FileReadFailed=\u9519\u8BEF: \u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6 {0} -ERR_CantDeleteFile=\u9519\u8BEF: \u65E0\u6CD5\u5220\u9664\u6587\u4EF6 {0}\u3002 -ERR_MissingDirectory=\u7F3A\u5C11\u76EE\u5F55 {0} -ERR_InvalidDirectory=\u76EE\u5F55 {0} \u65E0\u6548 -ERR_EmptySourceDirectory=\u6E90\u76EE\u5F55 {0} \u4E3A\u7A7A -ERR_MissingJavaHome=\u9519\u8BEF: Java \u4E3B\u76EE\u5F55\u672A\u77E5\u3002 -ERR_MissingJavaFxHome=\u9519\u8BEF: JavaFx \u4E3B\u76EE\u5F55\u672A\u77E5\u3002 -ERR_JavacFailed=\u9519\u8BEF: javac \u6267\u884C\u5931\u8D25, \u9000\u51FA\u4EE3\u7801: {0} -ERR_MakeAllJavacFailed=\u9519\u8BEF: java \u6E90\u7F16\u8BD1\u5931\u8D25 -ERR_DeployFailed=\u9519\u8BEF: \u90E8\u7F72\u5931\u8D25 -ERR_InvalidStoreFile=\u9519\u8BEF: \u65E0\u6548\u5BC6\u94A5\u5E93\u6587\u4EF6: {0} -ERR_SignFailed=\u9519\u8BEF: \u7B7E\u540D\u5931\u8D25 ERR_MissingAppResources=\u9519\u8BEF: \u627E\u4E0D\u5230\u5E94\u7528\u7A0B\u5E8F jar -ERR_NoEmbeddedDT=\u9519\u8BEF: -includedt \u9700\u8981 java \u90E8\u7F72\u5DE5\u5177\u5305, \u4F46\u6B64\u5206\u53D1\u4E2D\u672A\u5305\u542B -MSG_UpdatingJar=\u66F4\u65B0 Jar \u6587\u4EF6: {0} -MSG_NoJREPackaged=\u7A0B\u5E8F\u5305\u914D\u7F6E\u4E3A\u5728\u53D1\u8FD0\u65F6\u4E0D\u5E26 JRE\u3002 -MSG_UserProvidedJRE=\u4F7F\u7528\u4EE5\u4E0B\u4F4D\u7F6E\u7684\u57FA\u7840 JDK: {0} -MSG_UseSystemJRE=\u6CA1\u6709\u57FA\u7840 JDK\u3002\u7A0B\u5E8F\u5305\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE\u3002 MSG_BundlerFailed=\u9519\u8BEF: \u6253\u5305\u7A0B\u5E8F "{1}" ({0}) \u65E0\u6CD5\u751F\u6210\u5305\u3002 MSG_BundlerPlatformException=\u7531\u4E8E\u6253\u5305\u7A0B\u5E8F{0}\u4E0D\u652F\u6301\u5728\u6B64\u5E73\u53F0\u4E0A\u6253\u5305, \u56E0\u6B64\u5C06\u5176\u8DF3\u8FC7\u3002 MSG_BundlerConfigException=\u7531\u4E8E\u914D\u7F6E\u95EE\u9898, \u8DF3\u8FC7\u4E86\u6253\u5305\u7A0B\u5E8F{0}: {1} \n\u4FEE\u590D\u5EFA\u8BAE: {2} MSG_BundlerConfigExceptionNoAdvice=\u7531\u4E8E\u914D\u7F6E\u95EE\u9898, \u8DF3\u8FC7\u4E86\u6253\u5305\u7A0B\u5E8F{0}: {1} MSG_BundlerRuntimeException=\u7531\u4E8E{1}, \u6253\u5305\u7A0B\u5E8F{0}\u5931\u8D25 -MSG_JarNoSelfCopy=\u8DF3\u8FC7 jar \u590D\u5236\u5230\u81EA\u8EAB: {0} -MSG_EnterKeystorePassword=\u8F93\u5165\u5BC6\u94A5\u5E93\u7684\u5BC6\u7801\u77ED\u8BED: -MSG_EnterKeyPassword=\u8F93\u5165%s\u7684\u5BC6\u94A5\u53E3\u4EE4: diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + MSG_Help_common=Usage: jpackager \n\ \n\ where mode is one of: \n\ @@ -30,139 +56,135 @@ Generates a Server JRE installer.\n\ \n\ The following options are valid for all platforms:\n\ -\ --help -i \n\ +\ --help -h \n\ \ Shows the usage text, followed by a list and description of each valid option for the current platform and the given mode.\n\ \ If no mode is given, shows the usage text, followed by a list and description of each valid option for the current platform.\n\ \ When this option is used, all other options are ignored.\n\ -\ --output -o\n\ +\ --output -o \n\ \ Name of the directory where generated output file is placed.\n\ -\ --input -i\n\ +\ --input -i \n\ \ Name of the base directory that contains the files to package.\n\ -\ --files -f\n\ +\ --files -f \n\ \ List of files in the base directory. If omitted, all files from "input"\n\ \ directory (which is a mandatory argument in this case) will be packaged.\n\ -\ --name -n\n\ +\ --name -n \n\ \ Name of the application.\n\ -\ --main-jar -j\n\ +\ --main-jar -j
    \n\ \ The main JAR of the application. This JAR should have the main-class,\n\ \ and is relative to the assembled application directory.\n\ -\ --class -c\n\ +\ --class -c \n\ \ Qualified name of the application class to execute.\n\ -\ --version -v\n\ +\ --version -v \n\ \ Version of the application.\n\ -\ --arguments -a\n\ +\ --arguments -a
    \n\ \ Command line arguments to pass to the main class if no arguments\n\ \ are specified by the launcher.\n\ -\ --icon\n\ +\ --icon \n\ \ Icon of the application bundle.\n\ \ --singleton\n\ \ Prevents multiple instances of the application from launching\n\ \ (see SingleInstanceService API for more details).\n\ -\ --identifier\n\ +\ --identifier \n\ \ Machine readable identifier of the application. The format\n\ \ must be a DNS name in reverse order, such as com.example.myapplication.\n\ -\ The identifier is used for composing Single Instance unique id and\n\ -\ calculating preferences node to search for User JVM Options\n\ -\ (the format is a slash delimited version of the main package name,\n\ -\ such as "com/example/myapplication"), see UserJvmOptionsService API\n\ -\ for more details.\n\ +\ The identifier is used for composing Single Instance unique id.\n\ \ --verbose\n\ \ Enables verbose output.\n\ \ --strip-native-commands\n\ \ Removes native executables from the custom run-time images.\n\ -\ --jvm-args\n\ +\ --jvm-args \n\ \ JVM flags and options to pass to the application.\n\ -\ --file-associations\n\ +\ --file-associations \n\ \ Properties file that contains list of key=value parameters that\n\ \ describe a file association. "extension", "mime-type", "icon",\n\ \ "description" can be used as keys for the association.\n\ -\ --secondary-launcher\n\ +\ --secondary-launcher \n\ \ Properties file that contains a collection of options for a secondary launcher.\n\ -\ --build-root\n\ +\ --build-root \n\ \ Directory in which to use and place temporary files.\n\ -\ --runtime-image\n\ +\ --runtime-image \n\ \ Location of the predefined runtime image that is used to build\n\ \ an application image and installable package.\n\ -\ --app-image\n\ +\ --app-image \n\ \ Location of the predefined application image that is used to build\n\ \ an installable package.\n\ -\ --install-dir\n\ +\ --install-dir \n\ \ Installation directory of the application. Ignored on Windows, use\n\ -\ \u2013-win-dir-chooser to provide an ability to choose an installation directory.\n\ +\ --win-dir-chooser to provide an ability to choose an installation directory.\n\ \ --echo-mode\n\ \ Outputs (without executing) native packaging commands so that users\n\ \ can use this as a starting point for addressing more complex needs.\n\ -\ --license-file\n\ +\ --license-file \n\ \ The license file, relative to the base directory.\n\ -\ --copyright\n\ +\ --copyright \n\ \ Copyright for the application.\n\ -\ --description\n\ +\ --description \n\ \ Description of the application.\n\ -\ --category\n\ +\ --category \n\ \ Category or group of the application.\n\ -\ --vendor\n\ +\ --vendor \n\ \ Vendor of the application.\n\ \n\ Modular options:\n\ -\ --module -m\n\ +\ --module -m \n\ \ Main module of the application. This module must have the main-class,\n\ \ and be on the module path.\n\ -\ --module-path -p\n\ +\ --module-path -p \n\ \ When packaging the Java Runtime, this is the path JLink looks in for modules.\n\ -\ --add-modules\n\ +\ --add-modules \n\ \ List of modules to add to JImage creation, including possible services.\n\ -\ --limit-modules\n\ +\ --limit-modules \n\ \ Modules to limit JImage creation to.\n\ MSG_Help_mac=\nThe following options are valid for Mac OS X platforms:\n\ \ --mac-sign\n\ \ Request that the bundle be signed.\n\ -\ --mac-bundle-name\n\ +\ --mac-bundle-name \n\ \ Name of the application as it appears in the Menu Bar. This can be\n\ \ different from the application name. This name must be less than 16\n\ \ characters long and be suitable for displaying in the menu bar and\n\ -\ the application Info window.\n\ -\ --mac-bundle-identifier\n\ +\ the application Info window. Defaults to the application name.\n\ +\ --mac-bundle-identifier \n\ \ An identifier that uniquely identifies the application for MacOSX\n\ \ (and on the Mac App Store). May only use alphanumeric (A-Z,a-z,0-9),\n\ \ hyphen (-), and period (.) characters.\n\ -\ --mac-app-store-category\n\ +\ --mac-app-store-category \n\ \ Mac App Store Categories. Note that the key is the string shown to\n\ \ the user and the value is the ID of the category.\n\ -\ --mac-app-store-entitlements\n\ +\ --mac-app-store-entitlements \n\ \ File location of a custom mac app store entitlements file.\n\ -\ --mac-bundle-signing-prefix\n\ +\ --mac-bundle-signing-prefix \n\ \ When signing the application bundle, this value is prefixed to all\n\ \ components that need to be signed that don't have an existing bundle identifier.\n\ -\ --mac-signing-key-user-name\n\ +\ --mac-signing-key-user-name \n\ \ User name portion of the typical "Mac Developer ID Application: " signing key.\n\ -\ --mac-signing-keychain\n\ +\ --mac-signing-keychain \n\ \ Location of the keychain to use. If not specified, the standard keychains are used.\n\ MSG_Help_linux=\nThe following options are valid for Linux platforms:\n\ -\ --linux-bundle-name\n\ -\ Name for Linux bundle.\n\ +\ --linux-bundle-name \n\ +\ Name for Linux bundle. Defaults to the application name.\n\ \ --linux-package-deps\n\ \ Required packages or capabilities for the application.\n\ -\ --linux-rpm-license-type\n\ +\ --linux-rpm-license-type \n\ \ Type of the license ("License: " of the RPM .spec).\n\ -\ --linux-deb-maintainer\n\ +\ --linux-deb-maintainer \n\ \ Maintainer for .deb bundle.\n\ MSG_Help_win=\nThe following options are valid for Windows platforms:\n\ \ --win-menu\n\ \ Adds the application to the system menu.\n\ -\ --win-menu-group\n\ +\ --win-menu-group \n\ \ Start Menu group this application is placed in.\n\ \ --win-per-user-install\n\ \ Request to perform an install on a per-user basis.\n\ \ --win-dir-chooser\n\ \ Adds a dialog to enable the user to choose a directory in which\n\ \ the product is installed.\n\ -\ --win-registry-name\n\ +\ --win-registry-name \n\ \ Name of the application for registry references. Default is\n\ \ the Application Name with only alphanumerics, dots, and dashes (no whitespace).\n\ -\ --win-upgrade-uuid\n\ +\ --win-upgrade-uuid \n\ \ UUID associated with upgrades for this package.\n\ \ --win-shortcut\n\ \ Creates a desktop shortcut for the application.\n\ diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,8 +1,28 @@ -param.detect-modules.name=Auto Modules -param.detect-modules.description=Automatically calculate modules to Limit JImage creation to. - -param.jlink-options.name=JLink Options -param.jlink-options.description=Options to be added to JLink invocation. +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# param.jlink-builder.name=JLink Builder param.jlink-builder.description=Name of the JLink Builder to build the applicaiton image with. @@ -14,4 +34,3 @@ message.detected.modules="Automatically adding detected modules: {0}." message.modules="Adding modules: {0} to runtime image." -using.experimental.feature="Using experimental feature: {0}." \ No newline at end of file diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,8 +1,28 @@ -param.detect-modules.name=\u81EA\u52D5\u30E2\u30B8\u30E5\u30FC\u30EB -param.detect-modules.description=JImage\u306E\u4F5C\u6210\u3092\u5236\u9650\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u81EA\u52D5\u7684\u306B\u8A08\u7B97\u3057\u307E\u3059\u3002 - -param.jlink-options.name=JLink\u30AA\u30D7\u30B7\u30E7\u30F3 -param.jlink-options.description=JLink\u306E\u8D77\u52D5\u306B\u8FFD\u52A0\u3055\u308C\u308B\u30AA\u30D7\u30B7\u30E7\u30F3 +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# param.jlink-builder.name=JLink\u30D3\u30EB\u30C0\u30FC param.jlink-builder.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8\u3092\u4F5C\u6210\u3059\u308BJLink\u30D3\u30EB\u30C0\u30FC\u306E\u540D\u524D @@ -14,4 +34,3 @@ message.detected.modules="\u691C\u51FA\u3055\u308C\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059: {0}." message.modules="\u30E2\u30B8\u30E5\u30FC\u30EB: {0}\u3092\u30E9\u30F3\u30BF\u30A4\u30E0\u30FB\u30A4\u30E1\u30FC\u30B8\u306B\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059\u3002" -using.experimental.feature="\u8A66\u9A13\u7684\u306A\u6A5F\u80FD\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059: {0}\u3002" diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,8 +1,28 @@ -param.detect-modules.name=\u81EA\u52A8\u6A21\u5757 -param.detect-modules.description=\u81EA\u52A8\u8BA1\u7B97\u6A21\u5757\u4EE5\u5C06 JImage \u521B\u5EFA\u64CD\u4F5C\u9650\u5236\u4E3A\u8FD9\u4E9B\u6A21\u5757\u3002 - -param.jlink-options.name=JLink \u9009\u9879 -param.jlink-options.description=\u8981\u6DFB\u52A0\u5230 JLink \u8C03\u7528\u7684\u9009\u9879\u3002 +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# param.jlink-builder.name=JLink Builder param.jlink-builder.description=\u7528\u4E8E\u6784\u5EFA\u5E94\u7528\u7A0B\u5E8F\u6620\u50CF\u7684 JLink Builder \u7684\u540D\u79F0\u3002 @@ -13,5 +33,3 @@ message.detected.modules="\u6B63\u5728\u81EA\u52A8\u6DFB\u52A0\u68C0\u6D4B\u5230\u7684\u6A21\u5757: {0}\u3002" message.modules="\u6B63\u5728\u5C06\u6A21\u5757 {0} \u6DFB\u52A0\u5230\u8FD0\u884C\u65F6\u6620\u50CF\u3002" - -using.experimental.feature="\u6B63\u5728\u4F7F\u7528\u8BD5\u9A8C\u529F\u80FD: {0}\u3002" diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.app-name.name=App Name param.app-name.description=The name of the application. @@ -76,12 +102,6 @@ param.preferences-id.name=Preferences ID param.preferences-id.description=The preferences node to search for User JVM Options. The format be a slash delimited version of the main package name, such as "com/example/myapplication". -param.preloader.name=JavaFX Preloader Class Name -param.preloader.description=For JavaFX applications only, this is the Fully Qualified Class Name of the preloader class. This class needs to exist in the classpath, preferably early in the path. - -param.runtime.name=JRE -param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application. - param.title.name=Title param.title.description=A title for the application. @@ -126,18 +146,6 @@ param.fa-description.name=File Association Description param.fa-description.description=The description to be used for associated files. The default is " File". -param.commercial-features.name=Unlock Commercial Features -param.commercial-features.description=Some options require commercial features to be unlocked. This must be passed in as true to unlock those features. Otherwise they will be ignored. - -param.com-app-cds.name=Enable AppCDS -param.com-app-cds.description=Enabled and package with Application Class Data Sharing, including generation of .jsa file. - -param.com-app-cds-cache-mode.name=AppCDS Cache Mode -param.com-app-cds-cache-mode.description=The mode in which the AppCDS .jpa files are generated and cached. Current values are 'install', 'auto', and 'auto+install'. - -param.com-app-cds-root.name=AppCDS Root Classes -param.com-app-cds-root.description=List of "root classes" for AppCDS to generate class sharing data from. Default is the main class. - param.source-dir.name=Source Directory param.source-dir.description=Path to the directory containing the files to be bundled. @@ -171,7 +179,6 @@ message.runtime-image-dir-does-not-exist=Specified runtime image directory {0}\: {1} does not exists message.runtime-image-dir-does-not-exist.advice=Confirm that the value for {0} exists -error.required-parameter={0} is a required parameter. error.no-main-class-with-main-jar=An application class was not specified nor was one found in the jar {0} error.no-main-class-with-main-jar.advice=Please specify a applicationClass or ensure that the jar {0} specifies one in the manifest. error.no-main-class-with-classpath=An application class was not specified nor was one found in the supplied classpath @@ -181,7 +188,4 @@ error.main-jar-does-not-exist=The configured main jar does not exist {0} error.main-jar-does-not-exist.advice=The main jar must be specified relative to the app resources (not an absolute path), and must exist within those resources. -message.fx-app-does-not-match-specified-main=The jar {0} has an FX Application class{1} that does not match the declared main {2} -message.main-class-does-not-match-specified-main=The jar {0} has a main class {1} that does not match the declared main {2} - warning.no.jdk.modules.found=Warning: No JDK Modules found. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.app-name.name=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D param.app-name.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3002 @@ -86,12 +112,6 @@ param.preferences-id.name=\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9ID param.preferences-id.description=\u30E6\u30FC\u30B6\u30FC\u306EJVM\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u691C\u7D22\u3059\u308B\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u30FB\u30CE\u30FC\u30C9\u3002\u5F62\u5F0F\u306F\u3001"com/example/myapplication"\u306A\u3069\u3001\u30E1\u30A4\u30F3\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u306E\u30B9\u30E9\u30C3\u30B7\u30E5\u533A\u5207\u308A\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u3059\u3002 -param.preloader.name=JavaFX\u30D7\u30EC\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u540D -param.preloader.description=JavaFX\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u307F\u306E\u5834\u5408\u3001\u30D7\u30EC\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u306E\u5B8C\u5168\u4FEE\u98FE\u540D\u3067\u3059\u3002\u3053\u306E\u30AF\u30E9\u30B9\u306F\u30AF\u30E9\u30B9\u30D1\u30B9(\u53EF\u80FD\u306A\u5834\u5408\u306F\u30D1\u30B9\u306E\u524D\u306E\u65B9)\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 - -param.runtime.name=JRE -param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 - param.system-wide.name=\u30B7\u30B9\u30C6\u30E0\u5168\u4F53 param.system-wide.description=\u3053\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306F\u3001\u305D\u308C\u81EA\u4F53\u3092\u30B7\u30B9\u30C6\u30E0\u5168\u4F53\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3001\u307E\u305F\u306F\u5404\u30E6\u30FC\u30B6\u30FC\u306B\u5BFE\u3057\u3066\u306E\u307F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3002Null\u306F\u30B7\u30B9\u30C6\u30E0\u30FB\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u610F\u5473\u3057\u307E\u3059\u3002 @@ -133,18 +153,6 @@ param.fa-description.name=\u30D5\u30A1\u30A4\u30EB\u30FB\u30A2\u30BD\u30B7\u30A8\u30FC\u30B7\u30E7\u30F3\u306E\u8AAC\u660E param.fa-description.description=\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u4F7F\u7528\u3059\u308B\u8AAC\u660E\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F"\u30D5\u30A1\u30A4\u30EB"\u3067\u3059\u3002 -param.commercial-features.name=\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u89E3\u9664 -param.commercial-features.description=\u4E00\u90E8\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u3092\u89E3\u9664\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u3092\u89E3\u9664\u3059\u308B\u306B\u306F\u3001true\u3068\u3057\u3066\u6E21\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u305D\u3046\u3067\u306A\u3044\u5834\u5408\u306F\u7121\u8996\u3055\u308C\u307E\u3059\u3002 - -param.com-app-cds.name=AppCDS\u306E\u6709\u52B9\u5316 -param.com-app-cds.description=\u6709\u52B9\u5316\u3055\u308C\u3001.jsa\u30D5\u30A1\u30A4\u30EB\u306E\u751F\u6210\u3092\u542B\u3080\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u5171\u6709\u3092\u542B\u3081\u3066\u30D1\u30C3\u30B1\u30FC\u30B8\u30F3\u30B0\u3057\u307E\u3059\u3002 - -param.com-app-cds-cache-mode.name=AppCDS\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB\u30E2\u30FC\u30C9 -param.com-app-cds-cache-mode.description=AppCDS .jpa\u30D5\u30A1\u30A4\u30EB\u304C\u751F\u6210\u304A\u3088\u3073\u30AD\u30E3\u30C3\u30B7\u30E5\u3055\u308C\u308B\u30E2\u30FC\u30C9\u3002\u73FE\u5728\u306E\u5024\u306F'install'\u3001'auto'\u304A\u3088\u3073'auto+install'\u3067\u3059\u3002 - -param.com-app-cds-root.name=AppCDS\u30EB\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9 -param.com-app-cds-root.description=\u30AF\u30E9\u30B9\u5171\u6709\u30C7\u30FC\u30BF\u3092\u751F\u6210\u3059\u308BAppCDS\u306E"\u30EB\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9"\u306E\u30EA\u30B9\u30C8\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3067\u3059\u3002 - param.source-dir.name=\u30BD\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA param.source-dir.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3080\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3078\u306E\u30D1\u30B9\u3002 @@ -163,7 +171,6 @@ param.main.module.name=\u30E1\u30A4\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB param.main.module.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306Fmain-class\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u4E0A\u306B\u3042\u308A\u307E\u3059\u3002 -error.required-parameter={0}\u306F\u5FC5\u9808\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u3059\u3002 error.no-main-class-with-main-jar=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u304B\u3063\u305F\u304B\u3001jar {0}\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F error.no-main-class-with-main-jar.advice=applicationClass\u3092\u6307\u5B9A\u3059\u308B\u304B\u3001jar {0}\u304C\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306EapplicationClass\u3092\u6307\u5B9A\u3057\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 error.no-main-class-with-classpath=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u304B\u3063\u305F\u304B\u3001\u6307\u5B9A\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F @@ -173,7 +180,4 @@ error.main-jar-does-not-exist=\u69CB\u6210\u3055\u308C\u305F\u30E1\u30A4\u30F3jar\u306F{0}\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 error.main-jar-does-not-exist.advice=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30EA\u30BD\u30FC\u30B9\u306B\u5BFE\u3057\u3066\u76F8\u5BFE\u7684\u306B(\u7D76\u5BFE\u30D1\u30B9\u3067\u306F\u306A\u3044)\u30E1\u30A4\u30F3jar\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u3001\u305D\u306E\u30EA\u30BD\u30FC\u30B9\u5185\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 -message.fx-app-does-not-match-specified-main=jar {0}\u306B\u306F\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30E1\u30A4\u30F3{2}\u3068\u4E00\u81F4\u3057\u306A\u3044FX\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9{1}\u304C\u3042\u308A\u307E\u3059 -message.main-class-does-not-match-specified-main=jar {0}\u306B\u306F\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30E1\u30A4\u30F3{2}\u3068\u4E00\u81F4\u3057\u306A\u3044\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{1}\u304C\u3042\u308A\u307E\u3059 - warning.no.jdk.modules.found=\u8B66\u544A: JDK\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.app-name.name=\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0 param.app-name.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u540D\u79F0\u3002 @@ -86,12 +112,6 @@ param.preferences-id.name=\u9996\u9009 ID param.preferences-id.description=\u5728\u5176\u4E2D\u641C\u7D22\u7528\u6237 JVM \u9009\u9879\u7684\u9996\u9009\u8282\u70B9\u3002\u5176\u683C\u5F0F\u5E94\u4E3A\u4E3B\u7A0B\u5E8F\u5305\u540D\u79F0\u4EE5\u659C\u6760\u5206\u9694\u7684\u7248\u672C, \u4F8B\u5982 "com/example/myapplication"\u3002 -param.preloader.name=JavaFX \u9884\u52A0\u8F7D\u5668\u7C7B\u540D -param.preloader.description=\u4EC5\u7528\u4E8E JavaFX \u5E94\u7528\u7A0B\u5E8F, \u8FD9\u662F\u9884\u52A0\u8F7D\u5668\u7C7B\u7684\u5168\u9650\u5B9A\u7C7B\u540D\u3002\u7C7B\u8DEF\u5F84\u4E2D\u5FC5\u987B\u5B58\u5728\u6B64\u7C7B, \u6700\u597D\u662F\u5728\u8DEF\u5F84\u524D\u7AEF\u3002 - -param.runtime.name=JRE -param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002 - param.system-wide.name=\u7CFB\u7EDF\u8303\u56F4 param.system-wide.description=\u6B64\u5E94\u7528\u7A0B\u5E8F\u662F\u5E94\u5C1D\u8BD5\u5728\u7CFB\u7EDF\u8303\u56F4\u5185\u5B89\u88C5, \u8FD8\u662F\u4EC5\u4E3A\u6BCF\u4E2A\u7528\u6237\u5B89\u88C5? \u7A7A\u503C\u8868\u793A\u4F7F\u7528\u7CFB\u7EDF\u9ED8\u8BA4\u503C\u3002 @@ -133,18 +153,6 @@ param.fa-description.name=\u6587\u4EF6\u5173\u8054\u8BF4\u660E param.fa-description.description=\u7528\u4E8E\u6240\u5173\u8054\u6587\u4EF6\u7684\u8BF4\u660E\u3002\u9ED8\u8BA4\u503C\u4E3A " \u6587\u4EF6"\u3002 -param.commercial-features.name=\u5F00\u542F\u5546\u4E1A\u529F\u80FD -param.commercial-features.description=\u4E00\u4E9B\u9009\u9879\u9700\u8981\u5F00\u542F\u5546\u4E1A\u529F\u80FD\u3002\u8FD9\u5FC5\u987B\u4F20\u5165 true \u6765\u5F00\u542F\u8FD9\u4E9B\u529F\u80FD\u3002\u5426\u5219\u5C06\u5FFD\u7565\u3002 - -param.com-app-cds.name=\u542F\u7528 AppCDS -param.com-app-cds.description=\u542F\u7528\u5E94\u7528\u7A0B\u5E8F\u7C7B\u6570\u636E\u5171\u4EAB\u529F\u80FD\u5E76\u6253\u5305, \u5305\u62EC\u751F\u6210 .jsa \u6587\u4EF6\u3002 - -param.com-app-cds-cache-mode.name=AppCDS \u9AD8\u901F\u7F13\u5B58\u6A21\u5F0F -param.com-app-cds-cache-mode.description=\u751F\u6210\u548C\u9AD8\u901F\u7F13\u5B58 AppCDS .jpa \u6587\u4EF6\u7684\u6A21\u5F0F\u3002\u5F53\u524D\u503C\u4E3A 'install', 'auto' \u548C 'auto+install'\u3002 - -param.com-app-cds-root.name=AppCDS \u6839\u7C7B -param.com-app-cds-root.description=\u4ECE\u5176\u4E2D\u751F\u6210\u7C7B\u5171\u4EAB\u6570\u636E\u7684 AppCDS \u7684 "\u6839\u7C7B" \u5217\u8868\u3002\u9ED8\u8BA4\u503C\u4E3A\u4E3B\u7C7B\u3002 - param.source-dir.name=\u6E90\u76EE\u5F55 param.source-dir.description=\u5305\u542B\u8981\u6253\u5305\u6587\u4EF6\u7684\u76EE\u5F55\u8DEF\u5F84\u3002 @@ -163,7 +171,6 @@ param.main.module.name=\u4E3B\u6A21\u5757 param.main.module.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u4E3B\u6A21\u5757\u3002\u6B64\u6A21\u5757\u5E94\u5177\u6709\u4E3B\u7C7B, \u5E76\u4E14\u4F4D\u4E8E\u6A21\u5757\u8DEF\u5F84\u4E0A\u3002 -error.required-parameter={0} \u662F\u5FC5\u9700\u7684\u53C2\u6570\u3002 error.no-main-class-with-main-jar=\u672A\u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u7C7B, \u5728 jar {0} \u4E2D\u4E5F\u672A\u627E\u5230\u5E94\u7528\u7A0B\u5E8F\u7C7B error.no-main-class-with-main-jar.advice=\u8BF7\u6307\u5B9A applicationClass \u6216\u786E\u4FDD jar {0} \u5728\u6E05\u5355\u4E2D\u6307\u5B9A\u4E00\u4E2A\u3002 error.no-main-class-with-classpath=\u672A\u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u7C7B, \u5728\u63D0\u4F9B\u7684\u7C7B\u8DEF\u5F84\u4E2D\u4E5F\u672A\u627E\u5230\u5E94\u7528\u7A0B\u5E8F\u7C7B @@ -173,7 +180,4 @@ error.main-jar-does-not-exist=\u914D\u7F6E\u7684\u4E3B jar \u4E0D\u5B58\u5728 {0} error.main-jar-does-not-exist.advice=\u4E3B jar \u5FC5\u987B\u76F8\u5BF9\u4E8E\u5E94\u7528\u7A0B\u5E8F\u8D44\u6E90\u6307\u5B9A (\u4E0D\u662F\u7EDD\u5BF9\u8DEF\u5F84), \u5E76\u4E14\u5FC5\u987B\u5B58\u5728\u4E8E\u8FD9\u4E9B\u8D44\u6E90\u4E2D\u3002 -message.fx-app-does-not-match-specified-main=jar {0} \u5177\u6709\u4E0E\u6240\u58F0\u660E\u4E3B {2} \u4E0D\u5339\u914D\u7684 FX \u5E94\u7528\u7A0B\u5E8F\u7C7B {1} -message.main-class-does-not-match-specified-main=jar {0} \u5177\u6709\u4E0E\u6240\u58F0\u660E\u4E3B {2} \u4E0D\u5339\u914D\u7684\u4E3B\u7C7B {1} - warning.no.jdk.modules.found=\u8B66\u544A: \u672A\u627E\u5230 JDK \u6A21\u5757\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + message.using-default-resource=Using default package resource {0} (add {1} to the class path to customize) message.using-custom-resource-from-file=Using custom package resource {0} (loaded from file {1}) message.using-custom-resource-from-classpath=Using custom package resource {0} (loaded from {1}) diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + message.using-default-resource=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528({1}\u3092\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306B\u8FFD\u52A0\u3057\u3066\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA) message.using-custom-resource-from-file=\u30AB\u30B9\u30BF\u30E0\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528(\u30D5\u30A1\u30A4\u30EB{1}\u304B\u3089\u30ED\u30FC\u30C9\u6E08) message.using-custom-resource-from-classpath=\u30AB\u30B9\u30BF\u30E0\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528({1}\u304B\u3089\u30ED\u30FC\u30C9\u6E08) diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + message.using-default-resource=\u4F7F\u7528\u9ED8\u8BA4\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u5C06 {1} \u6DFB\u52A0\u5230\u7C7B\u8DEF\u5F84\u4EE5\u5B9A\u5236) message.using-custom-resource-from-file=\u4F7F\u7528\u5B9A\u5236\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u4ECE\u6587\u4EF6 {1} \u52A0\u8F7D) message.using-custom-resource-from-classpath=\u4F7F\u7528\u5B9A\u5236\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u4ECE {1} \u52A0\u8F7D) diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/jre.module.list --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/jre.module.list Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,56 @@ +; This file contains a list of all modules in a modular JDK that match a JRE. + +java.base +java.compiler +java.datatransfer +java.xml +java.prefs +java.desktop +java.instrument +java.logging +java.management +java.security.sasl +java.naming +java.rmi +java.management.rmi +java.net.http +java.scripting +java.security.jgss +java.transaction.xa +java.sql +java.sql.rowset +java.xml.crypto +java.se +java.smartcardio +jdk.internal.jvmstat +jdk.attach +jdk.charsets +jdk.compiler +jdk.crypto.ec +jdk.crypto.cryptoki +jdk.dynalink +jdk.httpserver +jdk.internal.le +jdk.internal.opt +jdk.internal.vm.ci +jdk.management +jdk.unsupported +jdk.internal.vm.compiler +jdk.internal.vm.compiler.management +jdk.jartool +jdk.jcmd +jdk.jdwp.agent +jdk.jdi +jdk.jsobject +jdk.jstatd +jdk.localedata +jdk.management.agent +jdk.naming.dns +jdk.naming.rmi +jdk.net +jdk.scripting.nashorn +jdk.sctp +jdk.security.auth +jdk.security.jgss +jdk.xml.dom +jdk.zipfs diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/internal/resources/server.jre.list --- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/server.jre.list Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -; This file contains a list of all modules in a modular JDK that match a JRE. - -java.base -java.compiler -java.datatransfer -java.xml -java.prefs -java.desktop -java.instrument -java.logging -java.management -java.security.sasl -java.naming -java.rmi -java.management.rmi -java.net.http -java.scripting -java.security.jgss -java.transaction.xa -java.sql -java.sql.rowset -java.xml.crypto -java.se -java.smartcardio -jdk.internal.jvmstat -jdk.attach -jdk.charsets -jdk.compiler -jdk.crypto.ec -jdk.crypto.cryptoki -jdk.dynalink -jdk.httpserver -jdk.internal.le -jdk.internal.opt -jdk.internal.vm.ci -jdk.management -jdk.unsupported -jdk.internal.vm.compiler -jdk.internal.vm.compiler.management -jdk.jartool -jdk.jcmd -jdk.jdwp.agent -jdk.jdi -jdk.jsobject -jdk.jstatd -jdk.localedata -jdk.management.agent -jdk.naming.dns -jdk.naming.rmi -jdk.net -jdk.scripting.nashorn -jdk.sctp -jdk.security.auth -jdk.security.jgss -jdk.xml.dom -jdk.zipfs diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/jdk/packager/main/Main.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/share/classes/jdk/packager/main/Main.java Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.packager.main; + +import jdk.packager.internal.Arguments; +import jdk.packager.internal.Log; +import jdk.packager.internal.CLIHelp; +import java.io.PrintWriter; +import java.util.ResourceBundle; + +public class Main { + + private static final ResourceBundle bundle = + ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle"); + + private static final String version = bundle.getString("MSG_Version") + + " " + System.getProperty("java.version") + "\n"; + + /** + * main(String... args) + * This is the entry point for the jpackager tool. + * + * @param args command line arguments + */ + public static void main(String... args) throws Exception { + // Create logger with default system.out and system.err + Log.Logger logger = new Log.Logger(false); + Log.setLogger(logger); + + int status = run(args); + System.exit(status); + } + + /** + * run() - this is the entry point for the ToolProvider API. + * + * @param out output stream + * @param err error output stream + * @param args command line arguments + * @return an exit code. 0 means success, non-zero means an error occurred. + */ + public static int run(PrintWriter out, PrintWriter err, String... args) + throws Exception { + // Create logger with provided streams + Log.Logger logger = new Log.Logger(false); + logger.setPrintWriter(out, err); + Log.setLogger(logger); + + int status = run(args); + Log.flush(); + return status; + } + + private static int run(String... args) throws Exception { + if (args.length == 0) { + CLIHelp.showHelp(true); + } else if (hasHelp(args)){ + CLIHelp.showHelp(false); + } else if (args.length == 1 && args[0].equals("--version")) { + Log.info(version); + } else { + try { + Arguments arguments = new Arguments(args); + arguments.processArguments(); + } catch (Exception e) { + if (Arguments.verbose()) { + Log.verbose(e); + } else { + Log.error(e.getMessage()); + if (e.getCause() != null && e.getCause() != e) { + Log.error(e.getCause().getMessage()); + } + } + return -1; + } + } + + return 0; + } + + private static boolean hasHelp(String[] args) { + for (String a : args) { + if ("--help".equals(a) || "-h".equals(a)) { + return true; + } + } + return false; + } + +} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/classes/module-info.java --- a/src/jdk.packager/share/classes/module-info.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/classes/module-info.java Wed Oct 17 13:50:11 2018 -0400 @@ -26,15 +26,10 @@ /** * Defines the Java packager tool, jpackager. * - *

    The jpackager is a tool for generating bundles for self-contained applications. - * It can be located under the name {@code "jpackager"} using the {@link ToolProvider}, for example: - *

    {@code
    - * ToolProvider jpackager = ToolProvider.findFirst("jpackager").orElseThrow(...);
    - * jpackager.run(...);
    - * }
    + *

    jpackager is a tool for generating self-contained application bundles. * * @moduleGraph - * @since 11 + * @since 12 */ module jdk.packager { @@ -51,5 +46,5 @@ jdk.packager.internal.BasicBundlers; provides java.util.spi.ToolProvider - with jdk.packager.internal.JavaPackagerToolProvider; + with jdk.packager.internal.JPackagerToolProvider; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Exports.cpp --- a/src/jdk.packager/share/native/library/common/Exports.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Exports.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -28,7 +28,7 @@ #include "PlatformString.h" #include "PropertyFile.h" #include "Lock.h" -#include "Java.h" +#include "JavaTypes.h" #include "jni.h" @@ -60,7 +60,8 @@ jstring result = NULL; Package& package = Package::GetInstance(); - OrderedMap defaultuserargs = package.GetDefaultJVMUserArgs(); + OrderedMap defaultuserargs = + package.GetDefaultJVMUserArgs(); TString loption = PlatformString(env, option).toString(); TString temp; @@ -84,7 +85,8 @@ Package& package = Package::GetInstance(); try { - result = MapKeysToJObjectArray(env, package.GetDefaultJVMUserArgs()); + result = MapKeysToJObjectArray( + env, package.GetDefaultJVMUserArgs()); } catch (const JavaException&) { } @@ -114,7 +116,8 @@ return result; } - static void _setUserJvmKeysAndValues(JNIEnv *env, jobjectArray options, jobjectArray values) { + static void _setUserJvmKeysAndValues( + JNIEnv *env, jobjectArray options, jobjectArray values) { if (env == NULL || options == NULL || values == NULL) return; @@ -126,8 +129,10 @@ JavaStringArray lvalues(env, values); for (unsigned int index = 0; index < loptions.Count(); index++) { - TString name = PlatformString(env, loptions.GetValue(index)).toString(); - TString value = PlatformString(env, lvalues.GetValue(index)).toString(); + TString name = PlatformString( + env, loptions.GetValue(index)).toString(); + TString value = PlatformString( + env, lvalues.GetValue(index)).toString(); newMap.Append(name, value); } } @@ -158,23 +163,34 @@ extern "C" { - JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue(JNIEnv *env, jclass klass, jstring option) { + JNIEXPORT jstring JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue( + JNIEnv *env, jclass klass, jstring option) { return UserJVMArgsExports::_getUserJvmOptionDefaultValue(env, option); } - JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys(JNIEnv *env, jclass klass) { + JNIEXPORT jobjectArray JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys( + JNIEnv *env, jclass klass) { return UserJVMArgsExports::_getUserJvmOptionDefaultKeys(env); } - JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue(JNIEnv *env, jclass klass, jstring option) { + JNIEXPORT jstring JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue( + JNIEnv *env, jclass klass, jstring option) { return UserJVMArgsExports::_getUserJvmOptionValue(env, option); } - JNIEXPORT void JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues(JNIEnv *env, jclass klass, jobjectArray options, jobjectArray values) { + JNIEXPORT void JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues( + JNIEnv *env, jclass klass, jobjectArray options, + jobjectArray values) { UserJVMArgsExports::_setUserJvmKeysAndValues(env, options, values); } - JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys(JNIEnv *env, jclass klass) { + JNIEXPORT jobjectArray JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys( + JNIEnv *env, jclass klass) { return UserJVMArgsExports::_getUserJvmOptionKeys(env); } } @@ -209,10 +225,12 @@ // } // } // -// The call to isdebugger() will wait until a native debugger is attached. The process -// identifier (pid) will be printed to the console for you to attach your debugger to. +// The call to isdebugger() will wait until a native debugger is attached. +// The process identifier (pid) will be printed to the console +// for you to attach your debugger to. extern "C" { - JNIEXPORT jboolean JNICALL Java_com_DebugExports_isdebugged(JNIEnv *env, jclass klass) { + JNIEXPORT jboolean JNICALL Java_com_DebugExports_isdebugged( + JNIEnv *env, jclass klass) { jboolean result = false; Package& package = Package::GetInstance(); @@ -224,7 +242,8 @@ return result; } - JNIEXPORT jint JNICALL Java_com_DebugExports_getpid(JNIEnv *env, jclass klass) { + JNIEXPORT jint JNICALL Java_com_DebugExports_getpid( + JNIEnv *env, jclass klass) { Platform& platform = Platform::GetInstance(); return platform.GetProcessID(); } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Exports.h --- a/src/jdk.packager/share/native/library/common/Exports.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Exports.h Wed Oct 17 13:50:11 2018 -0400 @@ -37,40 +37,45 @@ * Method: _getUserJvmOptionDefaultValue * Signature: (Ljava/lang/String;)Ljava/lang/String; */ -JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue - (JNIEnv *, jclass, jstring); +JNIEXPORT jstring JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue( + JNIEnv *, jclass, jstring); /* * Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions * Method: _getUserJvmOptionDefaultKeys * Signature: ()[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys - (JNIEnv *, jclass); +JNIEXPORT jobjectArray JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys( + JNIEnv *, jclass); /* * Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions * Method: _getUserJvmOptionValue * Signature: (Ljava/lang/String;)Ljava/lang/String; */ -JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue - (JNIEnv *, jclass, jstring); +JNIEXPORT jstring JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue( + JNIEnv *, jclass, jstring); /* * Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions * Method: _setUserJvmKeysAndValues * Signature: ([Ljava/lang/String;[Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues - (JNIEnv *, jclass, jobjectArray, jobjectArray); +JNIEXPORT void JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues( + JNIEnv *, jclass, jobjectArray, jobjectArray); /* * Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions * Method: _getUserJvmOptionKeys * Signature: ()[Ljava/lang/String; */ -JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys - (JNIEnv *, jclass); +JNIEXPORT jobjectArray JNICALL + Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys( + JNIEnv *, jclass); #ifdef __cplusplus } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/FilePath.cpp --- a/src/jdk.packager/share/native/library/common/FilePath.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/FilePath.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -30,11 +30,11 @@ #ifdef WINDOWS #include -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX #include -#endif //POSIX +#endif // POSIX bool FilePath::FileExists(const TString FileName) { @@ -54,14 +54,15 @@ FindClose(handle); } -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX struct stat buf; - if ((stat(StringToFileSystemString(FileName), &buf) == 0) && (S_ISREG(buf.st_mode) != 0)) { + if ((stat(StringToFileSystemString(FileName), &buf) == 0) && + (S_ISREG(buf.st_mode) != 0)) { result = true; } -#endif //POSIX +#endif // POSIX return result; } @@ -79,20 +80,21 @@ FindClose(handle); } -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX struct stat buf; - if ((stat(StringToFileSystemString(DirectoryName), &buf) == 0) && (S_ISDIR(buf.st_mode) != 0)) { + if ((stat(StringToFileSystemString(DirectoryName), &buf) == 0) && + (S_ISDIR(buf.st_mode) != 0)) { result = true; } -#endif //POSIX +#endif // POSIX return result; } #ifdef WINDOWS std::string GetLastErrorAsString() { - //Get the error message, if any. + // Get the error message, if any. DWORD errorMessageID = ::GetLastError(); if (errorMessageID == 0) { @@ -100,8 +102,10 @@ } LPSTR messageBuffer = NULL; - size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL); + size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER + | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, + SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL); std::string message(messageBuffer, size); @@ -110,7 +114,7 @@ return message; } -#endif //WINDOWS +#endif // WINDOWS bool FilePath::DeleteFile(const TString FileName) { bool result = false; @@ -125,12 +129,12 @@ } result = ::DeleteFile(lFileName.data()) == TRUE; -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX if (unlink(StringToFileSystemString(FileName)) == 0) { result = true; } -#endif //POSIX +#endif // POSIX } return result; @@ -145,25 +149,26 @@ TString directoryName = FixPathForPlatform(DirectoryName); DynamicBuffer lDirectoryName(directoryName.size() + 2); memcpy(lDirectoryName.GetData(), directoryName.data(), (directoryName.size() + 2) * sizeof(TCHAR)); - lDirectoryName[directoryName.size() + 1] = NULL; // Double null terminate for SHFileOperation. + lDirectoryName[directoryName.size() + 1] = NULL; + // Double null terminate for SHFileOperation. // Delete the folder and everything inside. fos.wFunc = FO_DELETE; fos.pFrom = lDirectoryName.GetData(); fos.fFlags = FOF_NO_UI; result = SHFileOperation(&fos) == 0; -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX if (unlink(StringToFileSystemString(DirectoryName)) == 0) { result = true; } -#endif //POSIX +#endif // POSIX } return result; } -TString FilePath::IncludeTrailingSeparater(const TString value) { +TString FilePath::IncludeTrailingSeparator(const TString value) { TString result = value; if (value.size() > 0) { @@ -178,14 +183,14 @@ return result; } -TString FilePath::IncludeTrailingSeparater(const char* value) { +TString FilePath::IncludeTrailingSeparator(const char* value) { TString lvalue = PlatformString(value).toString(); - return IncludeTrailingSeparater(lvalue); + return IncludeTrailingSeparator(lvalue); } -TString FilePath::IncludeTrailingSeparater(const wchar_t* value) { +TString FilePath::IncludeTrailingSeparator(const wchar_t* value) { TString lvalue = PlatformString(value).toString(); - return IncludeTrailingSeparater(lvalue); + return IncludeTrailingSeparator(lvalue); } TString FilePath::ExtractFilePath(TString Path) { @@ -195,10 +200,10 @@ if (slash != TString::npos) result = Path.substr(0, slash); return result; -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX return dirname(StringToFileSystemString(Path)); -#endif //POSIX +#endif // POSIX } TString FilePath::ExtractFileExt(TString Path) { @@ -221,10 +226,10 @@ result = Path.substr(slash + 1, Path.size() - slash - 1); return result; -#endif // WINDOWS +#endif // WINDOWS #ifdef POSIX return basename(StringToFileSystemString(Path)); -#endif //POSIX +#endif // POSIX } TString FilePath::ChangeFileExt(TString Path, TString Extension) { @@ -244,7 +249,8 @@ TString FilePath::FixPathForPlatform(TString Path) { TString result = Path; - std::replace(result.begin(), result.end(), BAD_TRAILING_PATHSEPARATOR, TRAILING_PATHSEPARATOR); + std::replace(result.begin(), result.end(), + BAD_TRAILING_PATHSEPARATOR, TRAILING_PATHSEPARATOR); #ifdef WINDOWS // The maximum path that does not require long path prefix. On Windows the // maximum path is 260 minus 1 (NUL) but for directories it is 260 minus @@ -268,7 +274,8 @@ TString FilePath::FixPathSeparatorForPlatform(TString Path) { TString result = Path; - std::replace(result.begin(), result.end(), BAD_PATH_SEPARATOR, PATH_SEPARATOR); + std::replace(result.begin(), result.end(), + BAD_PATH_SEPARATOR, PATH_SEPARATOR); return result; } @@ -289,7 +296,8 @@ lpath = ExtractFilePath(lpath); } - for (std::list::iterator iterator = paths.begin(); iterator != paths.end(); iterator++) { + for (std::list::iterator iterator = paths.begin(); + iterator != paths.end(); iterator++) { lpath = *iterator; #ifdef WINDOWS @@ -301,7 +309,7 @@ mode |= S_IRWXG | S_IROTH | S_IXOTH; } if (mkdir(StringToFileSystemString(lpath), mode) == 0) { -#endif //POSIX +#endif // POSIX result = true; } else { @@ -323,7 +331,7 @@ #endif // POSIX } -//-------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------- #include @@ -339,8 +347,9 @@ #ifdef WINDOWS DWORD attributes = 0; - for (std::vector::const_iterator iterator = FAttributes.begin(); - iterator != FAttributes.end(); iterator++) { + for (std::vector::const_iterator iterator = + FAttributes.begin(); + iterator != FAttributes.end(); iterator++) { switch (*iterator) { case faArchive: { attributes = attributes & FILE_ATTRIBUTE_ARCHIVE; @@ -366,10 +375,6 @@ attributes = attributes & FILE_ATTRIBUTE_HIDDEN; break; } -// case faIntegrityStream: { -// attributes = attributes & FILE_ATTRIBUTE_INTEGRITY_STREAM; -// break; -// } case faNormal: { attributes = attributes & FILE_ATTRIBUTE_NORMAL; break; @@ -378,10 +383,6 @@ attributes = attributes & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED; break; } -// case faNoScrubData: { -// attributes = attributes & FILE_ATTRIBUTE_NO_SCRUB_DATA; -// break; -// } case faOffline: { attributes = attributes & FILE_ATTRIBUTE_OFFLINE; break; @@ -420,8 +421,9 @@ #ifdef POSIX mode_t attributes = 0; - for (std::vector::const_iterator iterator = FAttributes.begin(); - iterator != FAttributes.end(); iterator++) { + for (std::vector::const_iterator iterator = + FAttributes.begin(); + iterator != FAttributes.end(); iterator++) { switch (*iterator) { case faBlockSpecial: { attributes |= S_IFBLK; @@ -516,7 +518,7 @@ if (chmod(FFileName.data(), attributes) == 0) { result = true; } -#endif //POSIX +#endif // POSIX return result; } @@ -542,23 +544,57 @@ if (attributes != INVALID_FILE_ATTRIBUTES) { result = true; - if (attributes | FILE_ATTRIBUTE_ARCHIVE) { FAttributes.push_back(faArchive); } - if (attributes | FILE_ATTRIBUTE_COMPRESSED) { FAttributes.push_back(faCompressed); } - if (attributes | FILE_ATTRIBUTE_DEVICE) { FAttributes.push_back(faDevice); } - if (attributes | FILE_ATTRIBUTE_DIRECTORY) { FAttributes.push_back(faDirectory); } - if (attributes | FILE_ATTRIBUTE_ENCRYPTED) { FAttributes.push_back(faEncrypted); } - if (attributes | FILE_ATTRIBUTE_HIDDEN) { FAttributes.push_back(faHidden); } - //if (attributes | FILE_ATTRIBUTE_INTEGRITY_STREAM) { FAttributes.push_back(faIntegrityStream); } - if (attributes | FILE_ATTRIBUTE_NORMAL) { FAttributes.push_back(faNormal); } - if (attributes | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) { FAttributes.push_back(faNotContentIndexed); } - //if (attributes | FILE_ATTRIBUTE_NO_SCRUB_DATA) { FAttributes.push_back(faNoScrubData); } - if (attributes | FILE_ATTRIBUTE_SYSTEM) { FAttributes.push_back(faSystem); } - if (attributes | FILE_ATTRIBUTE_OFFLINE) { FAttributes.push_back(faOffline); } - if (attributes | FILE_ATTRIBUTE_REPARSE_POINT) { FAttributes.push_back(faSymbolicLink); } - if (attributes | FILE_ATTRIBUTE_SPARSE_FILE) { FAttributes.push_back(faSparceFile); } - if (attributes | FILE_ATTRIBUTE_READONLY ) { FAttributes.push_back(faReadOnly); } - if (attributes | FILE_ATTRIBUTE_TEMPORARY) { FAttributes.push_back(faTemporary); } - if (attributes | FILE_ATTRIBUTE_VIRTUAL) { FAttributes.push_back(faVirtual); } + if (attributes | FILE_ATTRIBUTE_ARCHIVE) { + FAttributes.push_back(faArchive); + } + if (attributes | FILE_ATTRIBUTE_COMPRESSED) { + FAttributes.push_back(faCompressed); + } + if (attributes | FILE_ATTRIBUTE_DEVICE) { + FAttributes.push_back(faDevice); + } + if (attributes | FILE_ATTRIBUTE_DIRECTORY) { + FAttributes.push_back(faDirectory); + } + if (attributes | FILE_ATTRIBUTE_ENCRYPTED) { + FAttributes.push_back(faEncrypted); + } + if (attributes | FILE_ATTRIBUTE_HIDDEN) { + FAttributes.push_back(faHidden); + } + // if (attributes | FILE_ATTRIBUTE_INTEGRITY_STREAM) { + // FAttributes.push_back(faIntegrityStream); + // } + if (attributes | FILE_ATTRIBUTE_NORMAL) { + FAttributes.push_back(faNormal); + } + if (attributes | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) { + FAttributes.push_back(faNotContentIndexed); + } + // if (attributes | FILE_ATTRIBUTE_NO_SCRUB_DATA) { + // FAttributes.push_back(faNoScrubData); + // } + if (attributes | FILE_ATTRIBUTE_SYSTEM) { + FAttributes.push_back(faSystem); + } + if (attributes | FILE_ATTRIBUTE_OFFLINE) { + FAttributes.push_back(faOffline); + } + if (attributes | FILE_ATTRIBUTE_REPARSE_POINT) { + FAttributes.push_back(faSymbolicLink); + } + if (attributes | FILE_ATTRIBUTE_SPARSE_FILE) { + FAttributes.push_back(faSparceFile); + } + if (attributes | FILE_ATTRIBUTE_READONLY ) { + FAttributes.push_back(faReadOnly); + } + if (attributes | FILE_ATTRIBUTE_TEMPORARY) { + FAttributes.push_back(faTemporary); + } + if (attributes | FILE_ATTRIBUTE_VIRTUAL) { + FAttributes.push_back(faVirtual); + } } #endif // WINDOWS #ifdef POSIX @@ -567,47 +603,80 @@ if (stat(StringToFileSystemString(FFileName), &status) == 0) { result = true; - if (S_ISBLK(status.st_mode) != 0) { FAttributes.push_back(faBlockSpecial); } - if (S_ISCHR(status.st_mode) != 0) { FAttributes.push_back(faCharacterSpecial); } - if (S_ISFIFO(status.st_mode) != 0) { FAttributes.push_back(faFIFOSpecial); } - if (S_ISREG(status.st_mode) != 0) { FAttributes.push_back(faNormal); } - if (S_ISDIR(status.st_mode) != 0) { FAttributes.push_back(faDirectory); } - if (S_ISLNK(status.st_mode) != 0) { FAttributes.push_back(faSymbolicLink); } - if (S_ISSOCK(status.st_mode) != 0) { FAttributes.push_back(faSocket); } + if (S_ISBLK(status.st_mode) != 0) { + FAttributes.push_back(faBlockSpecial); + } + if (S_ISCHR(status.st_mode) != 0) { + FAttributes.push_back(faCharacterSpecial); + } + if (S_ISFIFO(status.st_mode) != 0) { + FAttributes.push_back(faFIFOSpecial); + } + if (S_ISREG(status.st_mode) != 0) { + FAttributes.push_back(faNormal); + } + if (S_ISDIR(status.st_mode) != 0) { + FAttributes.push_back(faDirectory); + } + if (S_ISLNK(status.st_mode) != 0) { + FAttributes.push_back(faSymbolicLink); + } + if (S_ISSOCK(status.st_mode) != 0) { + FAttributes.push_back(faSocket); + } // Owner if (S_ISRUSR(status.st_mode) != 0) { - if (S_ISWUSR(status.st_mode) != 0) { FAttributes.push_back(faReadWrite); } - else { FAttributes.push_back(faReadOnly); } + if (S_ISWUSR(status.st_mode) != 0) { + FAttributes.push_back(faReadWrite); + } else { + FAttributes.push_back(faReadOnly); + } + } else if (S_ISWUSR(status.st_mode) != 0) { + FAttributes.push_back(faWriteOnly); } - else if (S_ISWUSR(status.st_mode) != 0) { FAttributes.push_back(faWriteOnly); } - if (S_ISXUSR(status.st_mode) != 0) { FAttributes.push_back(faExecute); } + if (S_ISXUSR(status.st_mode) != 0) { + FAttributes.push_back(faExecute); + } // Group if (S_ISRGRP(status.st_mode) != 0) { - if (S_ISWGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupReadWrite); } - else { FAttributes.push_back(faGroupReadOnly); } + if (S_ISWGRP(status.st_mode) != 0) { + FAttributes.push_back(faGroupReadWrite); + } else { + FAttributes.push_back(faGroupReadOnly); + } + } else if (S_ISWGRP(status.st_mode) != 0) { + FAttributes.push_back(faGroupWriteOnly); } - else if (S_ISWGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupWriteOnly); } - if (S_ISXGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupExecute); } + if (S_ISXGRP(status.st_mode) != 0) { + FAttributes.push_back(faGroupExecute); + } // Others if (S_ISROTH(status.st_mode) != 0) { - if (S_ISWOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersReadWrite); } - else { FAttributes.push_back(faOthersReadOnly); } + if (S_ISWOTH(status.st_mode) != 0) { + FAttributes.push_back(faOthersReadWrite); + } else { + FAttributes.push_back(faOthersReadOnly); + } } - else if (S_ISWOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersWriteOnly); } + else if (S_ISWOTH(status.st_mode) != 0) { + FAttributes.push_back(faOthersWriteOnly); + } - if (S_ISXOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersExecute); } + if (S_ISXOTH(status.st_mode) != 0) { + FAttributes.push_back(faOthersExecute); + } if (FFileName.size() > 0 && FFileName[0] == '.') { FAttributes.push_back(faHidden); } } -#endif //POSIX +#endif // POSIX return result; } @@ -633,7 +702,7 @@ case faOthersWriteOnly: case faOthersReadOnly: case faOthersExecute: -#endif //POSIX +#endif // POSIX case faReadOnly: { result = true; @@ -653,7 +722,7 @@ (Value == faWriteOnly && Contains(faReadOnly) == true)) { Value = faReadWrite; } -#endif //POSIX +#endif // POSIX FAttributes.push_back(Value); WriteAttributes(); @@ -663,7 +732,8 @@ bool FileAttributes::Contains(FileAttribute Value) { bool result = false; - std::vector::const_iterator iterator = std::find(FAttributes.begin(), FAttributes.end(), Value); + std::vector::const_iterator iterator = + std::find(FAttributes.begin(), FAttributes.end(), Value); if (iterator != FAttributes.end()) { result = true; @@ -683,9 +753,10 @@ Append(faReadOnly); Remove(faReadWrite); } -#endif //POSIX +#endif // POSIX - std::vector::iterator iterator = std::find(FAttributes.begin(), FAttributes.end(), Value); + std::vector::iterator iterator = + std::find(FAttributes.begin(), FAttributes.end(), Value); if (iterator != FAttributes.end()) { FAttributes.erase(iterator); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/FilePath.h --- a/src/jdk.packager/share/native/library/common/FilePath.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/FilePath.h Wed Oct 17 13:50:11 2018 -0400 @@ -117,9 +117,9 @@ static TString ExtractFileName(TString Path); static TString ChangeFileExt(TString Path, TString Extension); - static TString IncludeTrailingSeparater(const TString value); - static TString IncludeTrailingSeparater(const char* value); - static TString IncludeTrailingSeparater(const wchar_t* value); + static TString IncludeTrailingSeparator(const TString value); + static TString IncludeTrailingSeparator(const char* value); + static TString IncludeTrailingSeparator(const wchar_t* value); static TString FixPathForPlatform(TString Path); static TString FixPathSeparatorForPlatform(TString Path); static TString PathSeparator(); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/GenericPlatform.cpp --- a/src/jdk.packager/share/native/library/common/GenericPlatform.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/GenericPlatform.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -30,7 +30,7 @@ #ifdef WINDOWS #include -#endif //WINDOWS +#endif // WINDOWS GenericPlatform::GenericPlatform(void) { @@ -44,7 +44,7 @@ TString basedir = GetPackageAppDirectory(); if (basedir.empty() == false) { - basedir = FilePath::IncludeTrailingSeparater(basedir); + basedir = FilePath::IncludeTrailingSeparator(basedir); TString appConfig = basedir + GetAppName() + _T(".cfg"); if (FilePath::FileExists(appConfig) == true) { @@ -64,19 +64,22 @@ TString GenericPlatform::GetPackageAppDirectory() { #if defined(WINDOWS) || defined(LINUX) - return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("app"); -#endif //WINDOWS || LINUX + return FilePath::IncludeTrailingSeparator( + GetPackageRootDirectory()) + _T("app"); +#endif // WINDOWS || LINUX #ifdef MAC - return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("Java"); + return FilePath::IncludeTrailingSeparator( + GetPackageRootDirectory()) + _T("Java"); #endif } TString GenericPlatform::GetPackageLauncherDirectory() { #if defined(WINDOWS) || defined(LINUX) return GetPackageRootDirectory(); -#endif //WINDOWS || LINUX +#endif // WINDOWS || LINUX #ifdef MAC - return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("MacOS"); + return FilePath::IncludeTrailingSeparator( + GetPackageRootDirectory()) + _T("MacOS"); #endif } @@ -88,14 +91,15 @@ #ifdef WINDOWS const std::locale empty_locale = std::locale::empty(); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX const std::locale empty_locale = std::locale::classic(); -#endif //POSIX +#endif // POSIX #if defined(WINDOWS) - const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8()); + const std::locale utf8_locale = + std::locale(empty_locale, new std::codecvt_utf8()); stream.imbue(utf8_locale); -#endif //WINDOWS +#endif // WINDOWS if (stream.is_open() == true) { while (stream.eof() == false) { @@ -126,17 +130,19 @@ #ifdef WINDOWS const std::locale empty_locale = std::locale::empty(); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX const std::locale empty_locale = std::locale::classic(); -#endif //POSIX +#endif // POSIX #if defined(WINDOWS) - const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8()); + const std::locale utf8_locale = + std::locale(empty_locale, new std::codecvt_utf8()); stream.imbue(utf8_locale); -#endif //WINDOWS || MAC +#endif // WINDOWS || MAC if (stream.is_open() == true) { - for (std::list::const_iterator iterator = Contents.begin(); iterator != Contents.end(); iterator++) { + for (std::list::const_iterator iterator = + Contents.begin(); iterator != Contents.end(); iterator++) { TString line = *iterator; stream << PlatformString(line).toUnicodeString() << std::endl; } @@ -152,33 +158,60 @@ #endif return result; } -#endif //WINDOWS || LINUX +#endif // WINDOWS || LINUX std::map GenericPlatform::GetKeys() { std::map keys; - keys.insert(std::map::value_type(CONFIG_VERSION, _T("app.version"))); - keys.insert(std::map::value_type(CONFIG_MAINJAR_KEY, _T("app.mainjar"))); - keys.insert(std::map::value_type(CONFIG_MAINMODULE_KEY, _T("app.mainmodule"))); - keys.insert(std::map::value_type(CONFIG_MAINCLASSNAME_KEY, _T("app.mainclass"))); - keys.insert(std::map::value_type(CONFIG_CLASSPATH_KEY, _T("app.classpath"))); - keys.insert(std::map::value_type(CONFIG_MODULEPATH_KEY, _T("app.modulepath"))); - keys.insert(std::map::value_type(APP_NAME_KEY, _T("app.name"))); - keys.insert(std::map::value_type(CONFIG_APP_ID_KEY, _T("app.preferences.id"))); - keys.insert(std::map::value_type(JVM_RUNTIME_KEY, _T("app.runtime"))); - keys.insert(std::map::value_type(PACKAGER_APP_DATA_DIR, _T("app.identifier"))); - - keys.insert(std::map::value_type(CONFIG_SPLASH_KEY, _T("app.splash"))); - keys.insert(std::map::value_type(CONFIG_APP_MEMORY, _T("app.memory"))); - keys.insert(std::map::value_type(CONFIG_APP_DEBUG, _T("app.debug"))); - keys.insert(std::map::value_type(CONFIG_APPLICATION_INSTANCE, _T("app.application.instance"))); - - keys.insert(std::map::value_type(CONFIG_SECTION_APPLICATION, _T("Application"))); - keys.insert(std::map::value_type(CONFIG_SECTION_JVMOPTIONS, _T("JVMOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, _T("JVMUserOverrideOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, _T("AppCDSGenerateCacheJVMOptions"))); - keys.insert(std::map::value_type(CONFIG_SECTION_ARGOPTIONS, _T("ArgOptions"))); + keys.insert(std::map::value_type(CONFIG_VERSION, + _T("app.version"))); + keys.insert(std::map::value_type(CONFIG_MAINJAR_KEY, + _T("app.mainjar"))); + keys.insert(std::map::value_type(CONFIG_MAINMODULE_KEY, + _T("app.mainmodule"))); + keys.insert(std::map::value_type(CONFIG_MAINCLASSNAME_KEY, + _T("app.mainclass"))); + keys.insert(std::map::value_type(CONFIG_CLASSPATH_KEY, + _T("app.classpath"))); + keys.insert(std::map::value_type(CONFIG_MODULEPATH_KEY, + _T("app.modulepath"))); + keys.insert(std::map::value_type(APP_NAME_KEY, + _T("app.name"))); + keys.insert(std::map::value_type(CONFIG_APP_ID_KEY, + _T("app.preferences.id"))); + keys.insert(std::map::value_type(JVM_RUNTIME_KEY, + _T("app.runtime"))); + keys.insert(std::map::value_type(PACKAGER_APP_DATA_DIR, + _T("app.identifier"))); + keys.insert(std::map::value_type(CONFIG_SPLASH_KEY, + _T("app.splash"))); + keys.insert(std::map::value_type(CONFIG_APP_MEMORY, + _T("app.memory"))); + keys.insert(std::map::value_type(CONFIG_APP_DEBUG, + _T("app.debug"))); + keys.insert(std::map::value_type(CONFIG_APPLICATION_INSTANCE, + _T("app.application.instance"))); + keys.insert(std::map::value_type(CONFIG_SECTION_APPLICATION, + _T("Application"))); + keys.insert(std::map::value_type(CONFIG_SECTION_JVMOPTIONS, + _T("JVMOptions"))); + keys.insert(std::map::value_type(CONFIG_SECTION_JVMUSEROPTIONS, + _T("JVMUserOptions"))); + keys.insert(std::map::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, + _T("JVMUserOverrideOptions"))); + keys.insert(std::map::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS, + _T("AppCDSJVMOptions"))); + keys.insert(std::map::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, + _T("AppCDSGenerateCacheJVMOptions"))); + keys.insert(std::map::value_type(CONFIG_SECTION_ARGOPTIONS, + _T("ArgOptions"))); return keys; } @@ -193,4 +226,4 @@ return result; } -#endif //DEBUG +#endif // DEBUG diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/GenericPlatform.h --- a/src/jdk.packager/share/native/library/common/GenericPlatform.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/GenericPlatform.h Wed Oct 17 13:50:11 2018 -0400 @@ -27,11 +27,12 @@ #define GENERICPLATFORM_H #include "FilePath.h" -//#include "Platform.h" +// #include "Platform.h" #ifdef WINDOWS #pragma warning( push ) -#pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member' via dominance +// C4250 - 'class1' : inherits 'class2::member' via dominance +#pragma warning( disable : 4250 ) #endif class GenericPlatform : virtual public Platform { @@ -45,19 +46,20 @@ virtual TString GetConfigFileName(); virtual std::list LoadFromFile(TString FileName); - virtual void SaveToFile(TString FileName, std::list Contents, bool ownerOnly); + virtual void SaveToFile(TString FileName, + std::list Contents, bool ownerOnly); #if defined(WINDOWS) || defined(LINUX) virtual TString GetAppName(); -#endif //WINDOWS || LINUX +#endif // WINDOWS || LINUX virtual std::map GetKeys(); #ifdef DEBUG virtual DebugState GetDebugState(); -#endif //DEBUG +#endif // DEBUG }; #ifdef WINDOWS #pragma warning( pop ) // C4250 #endif -#endif //GENERICPLATFORM_H +#endif // GENERICPLATFORM_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Helpers.cpp --- a/src/jdk.packager/share/native/library/common/Helpers.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Helpers.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -28,7 +28,8 @@ #include "PropertyFile.h" -bool Helpers::SplitOptionIntoNameValue(TString option, TString& Name, TString& Value) { +bool Helpers::SplitOptionIntoNameValue( + TString option, TString& Name, TString& Value) { bool result = false; Name = _T(""); Value = _T(""); @@ -80,7 +81,7 @@ Value = option.substr(index, index - option.length()); } - return true; + return result; } @@ -123,11 +124,13 @@ return result; } -OrderedMap Helpers::GetJVMArgsFromConfig(IPropertyContainer* config) { +OrderedMap + Helpers::GetJVMArgsFromConfig(IPropertyContainer* config) { OrderedMap result; for (unsigned int index = 0; index < config->GetCount(); index++) { - TString argname = TString(_T("jvmarg.")) + PlatformString(index + 1).toString(); + TString argname = + TString(_T("jvmarg.")) + PlatformString(index + 1).toString(); TString argvalue; if (config->GetValue(argname, argvalue) == false) { @@ -136,25 +139,29 @@ else if (argvalue.empty() == false) { TString name; TString value; - Helpers::SplitOptionIntoNameValue(argvalue, name, value); - result.Append(name, value); + if (Helpers::SplitOptionIntoNameValue(argvalue, name, value)) { + result.Append(name, value); + } } } return result; } -OrderedMap Helpers::GetJVMUserArgsFromConfig(IPropertyContainer* config) { +OrderedMap + Helpers::GetJVMUserArgsFromConfig(IPropertyContainer* config) { OrderedMap result; for (unsigned int index = 0; index < config->GetCount(); index++) { - TString prefix = TString(_T("jvmuserarg.")) + PlatformString(index + 1).toString(); + TString prefix = TString(_T("jvmuserarg.")) + + PlatformString(index + 1).toString(); TString argname = prefix + _T(".name"); TString argvalue = prefix + _T(".value"); TString name; TString value; - if ((config->GetValue(argname, name) == false) || (config->GetValue(argvalue, value) == false)) { + if ((config->GetValue(argname, name) == false) || + (config->GetValue(argvalue, value) == false)) { break; } else if ((name.empty() == false) && (value.empty() == false)) { @@ -169,7 +176,8 @@ std::list result; for (unsigned int index = 0; index < config->GetCount(); index++) { - TString argname = TString(_T("arg.")) + PlatformString(index + 1).toString(); + TString argname = TString(_T("arg.")) + + PlatformString(index + 1).toString(); TString argvalue; if (config->GetValue(argname, argvalue) == false) { @@ -215,18 +223,22 @@ AppendToIni(propertyFile, Container, keys[CONFIG_SPLASH_KEY]); // JVMOptions Section - OrderedMap JVMArgs = Helpers::GetJVMArgsFromConfig(&propertyFile); + OrderedMap JVMArgs = + Helpers::GetJVMArgsFromConfig(&propertyFile); Container->AppendSection(keys[CONFIG_SECTION_JVMOPTIONS], JVMArgs); // JVMUserOptions Section - OrderedMap defaultJVMUserArgs = Helpers::GetJVMUserArgsFromConfig(&propertyFile); - Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], defaultJVMUserArgs); + OrderedMap defaultJVMUserArgs = + Helpers::GetJVMUserArgsFromConfig(&propertyFile); + Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], + defaultJVMUserArgs); // ArgOptions Section std::list args = Helpers::GetArgsFromConfig(&propertyFile); OrderedMap convertedArgs; - for (std::list::iterator iterator = args.begin(); iterator != args.end(); iterator++) { + for (std::list::iterator iterator = args.begin(); + iterator != args.end(); iterator++) { TString arg = *iterator; TString name; TString value; @@ -236,7 +248,8 @@ } } - Container->AppendSection(keys[CONFIG_SECTION_ARGOPTIONS], convertedArgs); + Container->AppendSection(keys[CONFIG_SECTION_ARGOPTIONS], + convertedArgs); } } @@ -251,16 +264,20 @@ std::map keys = platform.GetKeys(); // JVMUserOverridesOptions Section - OrderedMap defaultJVMUserArgs = Helpers::GetJVMUserArgsFromConfig(&propertyFile); - Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], defaultJVMUserArgs); + OrderedMap defaultJVMUserArgs = + Helpers::GetJVMUserArgsFromConfig(&propertyFile); + Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], + defaultJVMUserArgs); } } -std::list Helpers::MapToNameValueList(OrderedMap Map) { +std::list + Helpers::MapToNameValueList(OrderedMap Map) { std::list result; std::vector keys = Map.GetKeys(); - for (OrderedMap::const_iterator iterator = Map.begin(); iterator != Map.end(); iterator++) { + for (OrderedMap::const_iterator iterator = Map.begin(); + iterator != Map.end(); iterator++) { pair *item = *iterator; TString key = item->first; TString value = item->second; @@ -296,8 +313,6 @@ for (unsigned int index = 0; index < Value.length(); index++) { TCHAR c = Value[index]; -// Environment::NewLine; - switch (c) { case '\n': { result.push_back(line); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Helpers.h --- a/src/jdk.packager/share/native/library/common/Helpers.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Helpers.h Wed Oct 17 13:50:11 2018 -0400 @@ -43,26 +43,29 @@ // // Example 2: // - static bool SplitOptionIntoNameValue(TString option, TString& Name, TString& Value); + static bool SplitOptionIntoNameValue(TString option, + TString& Name, TString& Value); static TString ReplaceString(TString subject, const TString& search, - const TString& replace); + const TString& replace); static TString ConvertIdToFilePath(TString Value); static TString ConvertIdToJavaPath(TString Value); static TString ConvertJavaPathToId(TString Value); - static OrderedMap GetJVMArgsFromConfig(IPropertyContainer* config); - static OrderedMap GetJVMUserArgsFromConfig(IPropertyContainer* config); - //static OrderedMap GetConfigFromJVMUserArgs(OrderedMap Value); + static OrderedMap + GetJVMArgsFromConfig(IPropertyContainer* config); + static OrderedMap + GetJVMUserArgsFromConfig(IPropertyContainer* config); static std::list GetArgsFromConfig(IPropertyContainer* config); static void LoadOldConfigFile(TString FileName, IniFile* Container); static void LoadOldUserConfigFile(TString FileName, IniFile* Container); - static std::list MapToNameValueList(OrderedMap Map); + static std::list + MapToNameValueList(OrderedMap Map); static TString NameValueToString(TString name, TString value); static std::list StringToArray(TString Value); }; -#endif //HELPERS_H +#endif // HELPERS_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/IniFile.cpp --- a/src/jdk.packager/share/native/library/common/IniFile.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/IniFile.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -33,7 +33,8 @@ } IniFile::~IniFile() { - for (OrderedMap::iterator iterator = FMap.begin(); iterator != FMap.end(); iterator++) { + for (OrderedMap::iterator iterator = + FMap.begin(); iterator != FMap.end(); iterator++) { pair *item = *iterator; delete item->second; } @@ -48,9 +49,11 @@ if (contents.empty() == false) { bool found = false; - // Determine the if file is an INI file or property file. Assign FDefaultSection if it is + // Determine the if file is an INI file or property file. + // Assign FDefaultSection if it is // an INI file. Otherwise FDefaultSection is NULL. - for (std::list::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) { + for (std::list::const_iterator iterator = contents.begin(); + iterator != contents.end(); iterator++) { TString line = *iterator; if (line[0] == ';') { @@ -69,7 +72,8 @@ if (found == true) { TString sectionName; - for (std::list::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) { + for (std::list::const_iterator iterator = contents.begin(); + iterator != contents.end(); iterator++) { TString line = *iterator; if (line[0] == ';') { @@ -83,7 +87,8 @@ TString name; TString value; - if (Helpers::SplitOptionIntoNameValue(line, name, value) == true) { + if (Helpers::SplitOptionIntoNameValue( + line, name, value) == true) { Append(sectionName, name, value); } } @@ -120,7 +125,8 @@ return result; } -void IniFile::Append(const TString SectionName, const TString Key, TString Value) { +void IniFile::Append(const TString SectionName, + const TString Key, TString Value) { if (FMap.ContainsKey(SectionName) == true) { IniSectionData* section; @@ -135,7 +141,8 @@ } } -void IniFile::AppendSection(const TString SectionName, OrderedMap Values) { +void IniFile::AppendSection(const TString SectionName, + OrderedMap Values) { if (FMap.ContainsKey(SectionName) == true) { IniSectionData* section; @@ -149,7 +156,8 @@ } } -bool IniFile::GetValue(const TString SectionName, const TString Key, TString& Value) { +bool IniFile::GetValue(const TString SectionName, + const TString Key, TString& Value) { bool result = false; IniSectionData* section; @@ -160,7 +168,8 @@ return result; } -bool IniFile::SetValue(const TString SectionName, const TString Key, TString Value) { +bool IniFile::SetValue(const TString SectionName, + const TString Key, TString Value) { bool result = false; IniSectionData* section; @@ -175,7 +184,8 @@ return result; } -bool IniFile::GetSection(const TString SectionName, OrderedMap &Data) { +bool IniFile::GetSection(const TString SectionName, + OrderedMap &Data) { bool result = false; if (FMap.ContainsKey(SectionName) == true) { @@ -195,7 +205,7 @@ return FMap.ContainsKey(SectionName); } -//-------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------- IniSectionData::IniSectionData() { FMap.SetAllowDuplicates(true); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/IniFile.h --- a/src/jdk.packager/share/native/library/common/IniFile.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/IniFile.h Wed Oct 17 13:50:11 2018 -0400 @@ -66,13 +66,17 @@ bool SaveToFile(const TString FileName, bool ownerOnly = true); void Append(const TString SectionName, const TString Key, TString Value); - void AppendSection(const TString SectionName, OrderedMap Values); - bool SetValue(const TString SectionName, const TString Key, TString Value); + void AppendSection(const TString SectionName, + OrderedMap Values); + bool SetValue(const TString SectionName, + const TString Key, TString Value); // ISectionalPropertyContainer - virtual bool GetSection(const TString SectionName, OrderedMap &Data); + virtual bool GetSection(const TString SectionName, + OrderedMap &Data); virtual bool ContainsSection(const TString SectionName); - virtual bool GetValue(const TString SectionName, const TString Key, TString& Value); + virtual bool GetValue(const TString SectionName, + const TString Key, TString& Value); }; -#endif //INIFILE_H +#endif // INIFILE_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Java.cpp --- a/src/jdk.packager/share/native/library/common/Java.cpp Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,324 +0,0 @@ -/* - * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#include "Java.h" -#include "PlatformString.h" - -#include - - -//-------------------------------------------------------------------------------------------------- - -#ifdef DEBUG -TString JavaException::CreateExceptionMessage(JNIEnv* Env, jthrowable Exception, - jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToTStringMethod, - jmethodID FrameToTStringMethod) { - - TString result; - jobjectArray frames = (jobjectArray)Env->CallObjectMethod(Exception, GetStackTraceMethod); - - // Append Throwable.toTString(). - if (0 != frames) { - jstring jstr = (jstring)Env->CallObjectMethod(Exception, ThrowableToTStringMethod); - const char* str = Env->GetStringUTFChars(jstr, 0); - result += PlatformString(str).toPlatformString(); - Env->ReleaseStringUTFChars(jstr, str); - Env->DeleteLocalRef(jstr); - } - - // Append stack trace if one exists. - if (Env->GetArrayLength(frames) > 0) { - jsize i = 0; - - for (i = 0; i < Env->GetArrayLength(frames); i++) { - // Get the string from the next frame and append it to - // the error message. - jobject frame = Env->GetObjectArrayElement(frames, i); - jstring obj = (jstring)Env->CallObjectMethod(frame, FrameToTStringMethod); - const char* str = Env->GetStringUTFChars(obj, 0); - result += _T("\n "); - result += PlatformString(str).toPlatformString(); - Env->ReleaseStringUTFChars(obj, str); - Env->DeleteLocalRef(obj); - Env->DeleteLocalRef(frame); - } - } - - // If Exception has a cause then append the stack trace messages. - if (0 != frames) { - jthrowable cause = (jthrowable)Env->CallObjectMethod(Exception, GetCauseMethod); - - if (cause != NULL) { - result += CreateExceptionMessage(Env, cause, GetCauseMethod, - GetStackTraceMethod, ThrowableToTStringMethod, - FrameToTStringMethod); - } - } - - return result; -} -#endif //DEBUG - -JavaException::JavaException() : Exception() {} - -//#ifdef WINDOWS -JavaException::JavaException(JNIEnv *Env, const TString Message) : Exception(Message) { -//#endif //WINDOWS -//#ifdef POSIX -//JavaException::JavaException(JNIEnv *Env, TString message) { -//#endif //POSIX - - FEnv = Env; - FException = Env->ExceptionOccurred(); - Env->ExceptionClear(); - -#ifdef DEBUG - Platform& platform = Platform::GetInstance(); - - if (platform.GetDebugState() == dsNone) { - jclass ThrowableClass = Env->FindClass("java/lang/Throwable"); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Env->ExceptionClear(); - return; - } - - jmethodID GetCauseMethod = Env->GetMethodID(ThrowableClass, - "getCause", - "()Ljava/lang/Throwable;"); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Env->ExceptionClear(); - return; - } - - jmethodID GetStackTraceMethod = Env->GetMethodID(ThrowableClass, - "getStackTrace", - "()[Ljava/lang/StackTraceElement;"); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Env->ExceptionClear(); - return; - } - - jmethodID ThrowableToTStringMethod = Env->GetMethodID(ThrowableClass, - "toString", - "()Ljava/lang/String;"); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Env->ExceptionClear(); - return; - } - - jclass FrameClass = Env->FindClass("java/lang/StackTraceElement"); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Env->ExceptionClear(); - return; - } - - jmethodID FrameToTStringMethod = Env->GetMethodID(FrameClass, - "toString", - "()Ljava/lang/String;"); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Env->ExceptionClear(); - return; - } - - TString lmessage = CreateExceptionMessage(Env, FException, GetCauseMethod, - GetStackTraceMethod, ThrowableToTStringMethod, FrameToTStringMethod); - SetMessage(lmessage); - } -#endif //DEBUG -} - -void JavaException::Rethrow() { - FEnv->Throw(FException); -} - -//-------------------------------------------------------------------------------------------------- - -JavaStaticMethod::JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method) { - FEnv = Env; - FClass = Class; - FMethod = Method; -} - -void JavaStaticMethod::CallVoidMethod(int Count, ...) { - va_list args; - va_start(args, Count); - FEnv->CallStaticVoidMethodV(FClass, FMethod, args); - va_end(args); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Messages& messages = Messages::GetInstance(); - throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD)); - } -} - -JavaStaticMethod::operator jmethodID () { - return FMethod; -} - -//-------------------------------------------------------------------------------------------------- - -JavaMethod::JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method) { - FEnv = Env; - FObj = Obj; - FMethod = Method; -} - -void JavaMethod::CallVoidMethod(int Count, ...) { - va_list args; - va_start(args, Count); - FEnv->CallVoidMethodV(FObj, FMethod, args); - va_end(args); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Messages& messages = Messages::GetInstance(); - throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD)); - } -} - -JavaMethod::operator jmethodID () { - return FMethod; -} - -//-------------------------------------------------------------------------------------------------- - -JavaClass::JavaClass(JNIEnv *Env, TString Name) { - FEnv = Env; - FClassName = Name; - FClass = FEnv->FindClass(PlatformString(FClassName)); - - if (FClass == NULL || FEnv->ExceptionCheck() == JNI_TRUE) { - Messages& messages = Messages::GetInstance(); - TString message = messages.GetMessage(CLASS_NOT_FOUND); - message = PlatformString::Format(message, FClassName.data()); - throw JavaException(FEnv, message); - } -} - -JavaClass::~JavaClass() { - FEnv->DeleteLocalRef(FClass); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - // throw JavaException(FEnv, _T("Error")); // VS2017 - FIXME - } -} - -JavaStaticMethod JavaClass::GetStaticMethod(TString Name, TString Signature) { - jmethodID method = FEnv->GetStaticMethodID(FClass, PlatformString(Name), PlatformString(Signature)); - - if (method == NULL || FEnv->ExceptionCheck() == JNI_TRUE) { - Messages& messages = Messages::GetInstance(); - TString message = messages.GetMessage(METHOD_NOT_FOUND); - message = PlatformString::Format(message, Name.data(), FClassName.data()); - throw JavaException(FEnv, message); - } - - return JavaStaticMethod(FEnv, FClass, method); -} - -JavaClass::operator jclass () { - return FClass; -} - -//-------------------------------------------------------------------------------------------------- - -void JavaStringArray::Initialize(size_t Size) { - JavaClass jstringClass(FEnv, _T("java/lang/String")); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - Messages& messages = Messages::GetInstance(); - TString message = messages.GetMessage(CLASS_NOT_FOUND); - message = PlatformString::Format(message, _T("String")); - throw JavaException(FEnv, message.data()); - } - - jstring str = PlatformString("").toJString(FEnv); - FData = (jobjectArray)FEnv->NewObjectArray((jsize)Size, jstringClass, str); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - throw JavaException(FEnv, _T("Error")); - } -} - -JavaStringArray::JavaStringArray(JNIEnv *Env, size_t Size) { - FEnv = Env; - Initialize(Size); -} - -JavaStringArray::JavaStringArray(JNIEnv *Env, jobjectArray Data) { - FEnv = Env; - FData = Data; -} - -JavaStringArray::JavaStringArray(JNIEnv *Env, std::list Items) { - FEnv = Env; - Initialize(Items.size()); - unsigned int index = 0; - - for (std::list::const_iterator iterator = Items.begin(); iterator != Items.end(); iterator++) { - TString item = *iterator; - SetValue(index, PlatformString(item).toJString(FEnv)); - index++; - } -} - -jobjectArray JavaStringArray::GetData() { - return FData; -} - -void JavaStringArray::SetValue(jsize Index, jstring Item) { - FEnv->SetObjectArrayElement(FData, Index, Item); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - throw JavaException(FEnv, _T("Error")); - } -} - -jstring JavaStringArray::GetValue(jsize Index) { - jstring result = (jstring)FEnv->GetObjectArrayElement(FData, Index); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - throw JavaException(FEnv, _T("Error")); - } - - return result; -} - -unsigned int JavaStringArray::Count() { - unsigned int result = FEnv->GetArrayLength(FData); - - if (FEnv->ExceptionCheck() == JNI_TRUE) { - throw JavaException(FEnv, _T("Error")); - } - - return result; -} - -//-------------------------------------------------------------------------------------------------- diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Java.h --- a/src/jdk.packager/share/native/library/common/Java.h Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#ifndef JAVA_H -#define JAVA_H - -#include "Platform.h" -#include "Messages.h" - -#include "jni.h" - - -class JavaClass; -class JavaStaticMethod; -class JavaMethod; -class JavaStringArray; - - -class JavaException : public Exception { -// Prohibit Heap-Based Classes. -private: - static void *operator new(size_t size); - -private: -#ifdef DEBUG - static TString CreateExceptionMessage(JNIEnv* Env, jthrowable Exception, - jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToStringMethod, - jmethodID FrameToStringMethod); -#endif //DEBUG - - jthrowable FException; - JNIEnv *FEnv; - -public: - explicit JavaException(); - explicit JavaException(JNIEnv *Env, const TString message); - virtual ~JavaException() throw() {} - - void Rethrow(); -}; - - -class JavaStaticMethod { -// Prohibit Heap-Based Classes. -private: - static void *operator new(size_t size); - static void operator delete(void *ptr); - -private: - JNIEnv *FEnv; - jmethodID FMethod; - jclass FClass; -public: - JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method); - - void CallVoidMethod(int Count, ...); - operator jmethodID (); -}; - - -class JavaMethod { -// Prohibit Heap-Based Classes. -private: - static void *operator new(size_t size); - static void operator delete(void *ptr); - - JavaMethod(JavaMethod const&); // Don't Implement. - void operator=(JavaMethod const&); // Don't implement - -private: - JNIEnv *FEnv; - jmethodID FMethod; - jobject FObj; -public: - JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method); - - void CallVoidMethod(int Count, ...); - operator jmethodID (); -}; - - -class JavaClass { -// Prohibit Heap-Based Classes. -private: - static void *operator new(size_t size); - static void operator delete(void *ptr); - - JavaClass(JavaClass const&); // Don't Implement. - void operator=(JavaClass const&); // Don't implement - -private: - JNIEnv *FEnv; - jclass FClass; - TString FClassName; - -public: - JavaClass(JNIEnv *Env, TString Name); - ~JavaClass(); - - JavaStaticMethod GetStaticMethod(TString Name, TString Signature); - operator jclass (); -}; - - -class JavaStringArray { -// Prohibit Heap-Based Classes. -private: - static void *operator new(size_t size); - static void operator delete(void *ptr); - - JavaStringArray(JavaStringArray const&); // Don't Implement. - void operator=(JavaStringArray const&); // Don't implement - -private: - JNIEnv *FEnv; - jobjectArray FData; - - void Initialize(size_t Size); - -public: - JavaStringArray(JNIEnv *Env, size_t Size); - JavaStringArray(JNIEnv *Env, jobjectArray Data); - JavaStringArray(JNIEnv *Env, std::list Array); - - jobjectArray GetData(); - void SetValue(jsize Index, jstring Item); - jstring GetValue(jsize Index); - unsigned int Count(); -}; - -#endif //JAVA_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/JavaTypes.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/share/native/library/common/JavaTypes.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,322 @@ +/* + * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include "JavaTypes.h" +#include "PlatformString.h" + +#include + + +#ifdef DEBUG +TString JavaException::CreateExceptionMessage(JNIEnv* Env, + jthrowable Exception, jmethodID GetCauseMethod, + jmethodID GetStackTraceMethod, jmethodID ThrowableToTStringMethod, + jmethodID FrameToTStringMethod) { + + TString result; + jobjectArray frames = + (jobjectArray)Env->CallObjectMethod(Exception, GetStackTraceMethod); + + // Append Throwable.toTString(). + if (0 != frames) { + jstring jstr = (jstring)Env->CallObjectMethod(Exception, + ThrowableToTStringMethod); + const char* str = Env->GetStringUTFChars(jstr, 0); + result += PlatformString(str).toPlatformString(); + Env->ReleaseStringUTFChars(jstr, str); + Env->DeleteLocalRef(jstr); + } + + // Append stack trace if one exists. + if (Env->GetArrayLength(frames) > 0) { + jsize i = 0; + + for (i = 0; i < Env->GetArrayLength(frames); i++) { + // Get the string from the next frame and append it to + // the error message. + jobject frame = Env->GetObjectArrayElement(frames, i); + jstring obj = (jstring)Env->CallObjectMethod(frame, + FrameToTStringMethod); + const char* str = Env->GetStringUTFChars(obj, 0); + result += _T("\n "); + result += PlatformString(str).toPlatformString(); + Env->ReleaseStringUTFChars(obj, str); + Env->DeleteLocalRef(obj); + Env->DeleteLocalRef(frame); + } + } + + // If Exception has a cause then append the stack trace messages. + if (0 != frames) { + jthrowable cause = + (jthrowable)Env->CallObjectMethod(Exception, GetCauseMethod); + + if (cause != NULL) { + result += CreateExceptionMessage(Env, cause, GetCauseMethod, + GetStackTraceMethod, ThrowableToTStringMethod, + FrameToTStringMethod); + } + } + + return result; +} +#endif //DEBUG + +JavaException::JavaException() : Exception() {} + +//#ifdef WINDOWS +JavaException::JavaException(JNIEnv *Env, + const TString Message) : Exception(Message) { +//#endif //WINDOWS +//#ifdef POSIX +//JavaException::JavaException(JNIEnv *Env, TString message) { +//#endif //POSIX + + FEnv = Env; + FException = Env->ExceptionOccurred(); + Env->ExceptionClear(); + +#ifdef DEBUG + Platform& platform = Platform::GetInstance(); + + if (platform.GetDebugState() == dsNone) { + jclass ThrowableClass = Env->FindClass("java/lang/Throwable"); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Env->ExceptionClear(); + return; + } + + jmethodID GetCauseMethod = Env->GetMethodID(ThrowableClass, + "getCause", "()Ljava/lang/Throwable;"); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Env->ExceptionClear(); + return; + } + + jmethodID GetStackTraceMethod = Env->GetMethodID(ThrowableClass, + "getStackTrace", "()[Ljava/lang/StackTraceElement;"); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Env->ExceptionClear(); + return; + } + + jmethodID ThrowableToTStringMethod = Env->GetMethodID(ThrowableClass, + "toString", "()Ljava/lang/String;"); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Env->ExceptionClear(); + return; + } + + jclass FrameClass = Env->FindClass("java/lang/StackTraceElement"); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Env->ExceptionClear(); + return; + } + + jmethodID FrameToTStringMethod = Env->GetMethodID(FrameClass, + "toString", "()Ljava/lang/String;"); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Env->ExceptionClear(); + return; + } + + TString lmessage = CreateExceptionMessage(Env, FException, + GetCauseMethod, GetStackTraceMethod, ThrowableToTStringMethod, + FrameToTStringMethod); + SetMessage(lmessage); + } +#endif //DEBUG +} + +void JavaException::Rethrow() { + FEnv->Throw(FException); +} + +//---------------------------------------------------------------------------- + +JavaStaticMethod::JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method) { + FEnv = Env; + FClass = Class; + FMethod = Method; +} + +void JavaStaticMethod::CallVoidMethod(int Count, ...) { + va_list args; + va_start(args, Count); + FEnv->CallStaticVoidMethodV(FClass, FMethod, args); + va_end(args); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Messages& messages = Messages::GetInstance(); + throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD)); + } +} + +JavaStaticMethod::operator jmethodID () { + return FMethod; +} + +//---------------------------------------------------------------------------- + +JavaMethod::JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method) { + FEnv = Env; + FObj = Obj; + FMethod = Method; +} + +void JavaMethod::CallVoidMethod(int Count, ...) { + va_list args; + va_start(args, Count); + FEnv->CallVoidMethodV(FObj, FMethod, args); + va_end(args); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Messages& messages = Messages::GetInstance(); + throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD)); + } +} + +JavaMethod::operator jmethodID () { + return FMethod; +} + +//---------------------------------------------------------------------------- + +JavaClass::JavaClass(JNIEnv *Env, TString Name) { + FEnv = Env; + FClassName = Name; + FClass = FEnv->FindClass(PlatformString(FClassName)); + + if (FClass == NULL || FEnv->ExceptionCheck() == JNI_TRUE) { + Messages& messages = Messages::GetInstance(); + TString message = messages.GetMessage(CLASS_NOT_FOUND); + message = PlatformString::Format(message, FClassName.data()); + throw JavaException(FEnv, message); + } +} + +JavaClass::~JavaClass() { + FEnv->DeleteLocalRef(FClass); +} + +JavaStaticMethod JavaClass::GetStaticMethod(TString Name, TString Signature) { + jmethodID method = FEnv->GetStaticMethodID(FClass, PlatformString(Name), + PlatformString(Signature)); + + if (method == NULL || FEnv->ExceptionCheck() == JNI_TRUE) { + Messages& messages = Messages::GetInstance(); + TString message = messages.GetMessage(METHOD_NOT_FOUND); + message = PlatformString::Format(message, Name.data(), + FClassName.data()); + throw JavaException(FEnv, message); + } + + return JavaStaticMethod(FEnv, FClass, method); +} + +JavaClass::operator jclass () { + return FClass; +} + +//---------------------------------------------------------------------------- + +void JavaStringArray::Initialize(size_t Size) { + JavaClass jstringClass(FEnv, _T("java/lang/String")); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + Messages& messages = Messages::GetInstance(); + TString message = messages.GetMessage(CLASS_NOT_FOUND); + message = PlatformString::Format(message, _T("String")); + throw JavaException(FEnv, message.data()); + } + + jstring str = PlatformString("").toJString(FEnv); + FData = (jobjectArray)FEnv->NewObjectArray((jsize)Size, jstringClass, str); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + throw JavaException(FEnv, _T("Error")); + } +} + +JavaStringArray::JavaStringArray(JNIEnv *Env, size_t Size) { + FEnv = Env; + Initialize(Size); +} + +JavaStringArray::JavaStringArray(JNIEnv *Env, jobjectArray Data) { + FEnv = Env; + FData = Data; +} + +JavaStringArray::JavaStringArray(JNIEnv *Env, std::list Items) { + FEnv = Env; + Initialize(Items.size()); + unsigned int index = 0; + + for (std::list::const_iterator iterator = Items.begin(); + iterator != Items.end(); iterator++) { + TString item = *iterator; + SetValue(index, PlatformString(item).toJString(FEnv)); + index++; + } +} + +jobjectArray JavaStringArray::GetData() { + return FData; +} + +void JavaStringArray::SetValue(jsize Index, jstring Item) { + FEnv->SetObjectArrayElement(FData, Index, Item); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + throw JavaException(FEnv, _T("Error")); + } +} + +jstring JavaStringArray::GetValue(jsize Index) { + jstring result = (jstring)FEnv->GetObjectArrayElement(FData, Index); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + throw JavaException(FEnv, _T("Error")); + } + + return result; +} + +unsigned int JavaStringArray::Count() { + unsigned int result = FEnv->GetArrayLength(FData); + + if (FEnv->ExceptionCheck() == JNI_TRUE) { + throw JavaException(FEnv, _T("Error")); + } + + return result; +} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/JavaTypes.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/share/native/library/common/JavaTypes.h Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef JAVATYPES_H +#define JAVATYPES_H + +#include "Platform.h" +#include "Messages.h" + +#include "jni.h" + + +class JavaClass; +class JavaStaticMethod; +class JavaMethod; +class JavaStringArray; + + +class JavaException : public Exception { +// Prohibit Heap-Based Classes. +private: + static void *operator new(size_t size); + +private: +#ifdef DEBUG + static TString CreateExceptionMessage(JNIEnv* Env, jthrowable Exception, + jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, + jmethodID ThrowableToStringMethod, jmethodID FrameToStringMethod); +#endif // DEBUG + + jthrowable FException; + JNIEnv *FEnv; + +public: + explicit JavaException(); + explicit JavaException(JNIEnv *Env, const TString message); + virtual ~JavaException() throw() {} + + void Rethrow(); +}; + + +class JavaStaticMethod { +// Prohibit Heap-Based Classes. +private: + static void *operator new(size_t size); + static void operator delete(void *ptr); + +private: + JNIEnv *FEnv; + jmethodID FMethod; + jclass FClass; +public: + JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method); + + void CallVoidMethod(int Count, ...); + operator jmethodID (); +}; + + +class JavaMethod { +// Prohibit Heap-Based Classes. +private: + static void *operator new(size_t size); + static void operator delete(void *ptr); + + JavaMethod(JavaMethod const&); // Don't Implement. + void operator=(JavaMethod const&); // Don't implement + +private: + JNIEnv *FEnv; + jmethodID FMethod; + jobject FObj; +public: + JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method); + + void CallVoidMethod(int Count, ...); + operator jmethodID (); +}; + + +class JavaClass { +// Prohibit Heap-Based Classes. +private: + static void *operator new(size_t size); + static void operator delete(void *ptr); + + JavaClass(JavaClass const&); // Don't Implement. + void operator=(JavaClass const&); // Don't implement + +private: + JNIEnv *FEnv; + jclass FClass; + TString FClassName; + +public: + JavaClass(JNIEnv *Env, TString Name); + ~JavaClass(); + + JavaStaticMethod GetStaticMethod(TString Name, TString Signature); + operator jclass (); +}; + + +class JavaStringArray { +// Prohibit Heap-Based Classes. +private: + static void *operator new(size_t size); + static void operator delete(void *ptr); + + JavaStringArray(JavaStringArray const&); // Don't Implement. + void operator=(JavaStringArray const&); // Don't implement + +private: + JNIEnv *FEnv; + jobjectArray FData; + + void Initialize(size_t Size); + +public: + JavaStringArray(JNIEnv *Env, size_t Size); + JavaStringArray(JNIEnv *Env, jobjectArray Data); + JavaStringArray(JNIEnv *Env, std::list Array); + + jobjectArray GetData(); + void SetValue(jsize Index, jstring Item); + jstring GetValue(jsize Index); + unsigned int Count(); +}; + +#endif // JAVATYPES_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp --- a/src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -28,7 +28,7 @@ #include "PlatformString.h" #include "FilePath.h" #include "Package.h" -#include "Java.h" +#include "JavaTypes.h" #include "Helpers.h" #include "Messages.h" #include "Macros.h" @@ -75,7 +75,8 @@ if (FCreateProc == NULL) { Platform& platform = Platform::GetInstance(); Messages& messages = Messages::GetInstance(); - platform.ShowMessage(messages.GetMessage(FAILED_LOCATING_JVM_ENTRY_POINT)); + platform.ShowMessage( + messages.GetMessage(FAILED_LOCATING_JVM_ENTRY_POINT)); return false; } @@ -92,7 +93,7 @@ 0) == 0; } -//-------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------- JavaOptions::JavaOptions(): FOptions(NULL) { } @@ -173,9 +174,10 @@ return FItems.size(); } -// jvmuserargs can have a trailing equals in the key. This needs to be removed to use -// other parts of the launcher. -OrderedMap RemoveTrailingEquals(OrderedMap Map) { +// jvmuserargs can have a trailing equals in the key. This needs to be +// removed to use other parts of the launcher. +OrderedMap RemoveTrailingEquals( + OrderedMap Map) { OrderedMap result; std::vector keys = Map.GetKeys(); @@ -185,8 +187,8 @@ TString value; if (Map.GetValue(name, value) == true) { - // If the last character of the key is an equals, then remove it. If there is no - // equals then combine the two as a key. + // If the last character of the key is an equals, then remove it. + // If there is no equals then combine the two as a key. TString::iterator i = name.end(); i--; @@ -212,7 +214,7 @@ return result; } -//-------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------- JavaVirtualMachine::JavaVirtualMachine() { } @@ -232,8 +234,11 @@ options.AppendValue(_T("-Djava.module.path"), modulepath); } - options.AppendValue(_T("-Djava.library.path"), package.GetPackageAppDirectory() + FilePath::PathSeparator() + package.GetPackageLauncherDirectory()); - options.AppendValue(_T("-Djava.launcher.path"), package.GetPackageLauncherDirectory()); + options.AppendValue(_T("-Djava.library.path"), + package.GetPackageAppDirectory() + FilePath::PathSeparator() + + package.GetPackageLauncherDirectory()); + options.AppendValue( + _T("-Djava.launcher.path"), package.GetPackageLauncherDirectory()); options.AppendValue(_T("-Dapp.preferences.id"), package.GetAppID()); options.AppendValues(package.GetJVMArgs()); options.AppendValues(RemoveTrailingEquals(package.GetJVMUserArgs())); @@ -241,10 +246,12 @@ #ifdef DEBUG if (package.Debugging() == dsJava) { options.AppendValue(_T("-Xdebug"), _T("")); - options.AppendValue(_T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"), _T("")); + options.AppendValue( + _T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"), + _T("")); platform.ShowMessage(_T("localhost:5005")); } -#endif //DEBUG +#endif // DEBUG TString maxHeapSizeOption; TString minHeapSizeOption; @@ -252,7 +259,8 @@ if (package.GetMemoryState() == PackageBootFields::msAuto) { TPlatformNumber memorySize = package.GetMemorySize(); - TString memory = PlatformString((size_t)memorySize).toString() + _T("m"); + TString memory = + PlatformString((size_t)memorySize).toString() + _T("m"); maxHeapSizeOption = TString(_T("-Xmx")) + memory; options.AppendValue(maxHeapSizeOption, _T("")); @@ -277,9 +285,9 @@ // Initialize the arguments to JLI_Launch() // - // On Mac OS X JLI_Launch spawns a new thread that actually starts the JVM. This - // new thread simply re-runs main(argc, argv). Therefore we do not want - // to add new args if we are still in the original main thread so we + // On Mac OS X JLI_Launch spawns a new thread that actually starts the JVM. + // This new thread simply re-runs main(argc, argv). Therefore we do not + // want to add new args if we are still in the original main thread so we // will treat them as command line args provided by the user ... // Only propagate original set of args first time. @@ -290,13 +298,14 @@ vmargs.push_back(package.GetCommandName()); if (package.HasSplashScreen() == true) { - options.AppendValue(TString(_T("-splash:")) + package.GetSplashScreenFileName(), _T("")); + options.AppendValue(TString(_T("-splash:")) + + package.GetSplashScreenFileName(), _T("")); } if (mainModule.empty() == true) { - options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName), _T("")); - } - else { + options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName), + _T("")); + } else { options.AppendValue(_T("-m")); options.AppendValue(mainModule); } @@ -311,12 +320,16 @@ vmargs.push_back(package.GetCommandName()); JavaOptions options; - options.AppendValue(_T("-Djava.library.path"), package.GetPackageAppDirectory() - + FilePath::PathSeparator() + package.GetPackageLauncherDirectory()); - options.AppendValue(_T("-Djava.launcher.path"), package.GetPackageLauncherDirectory()); - // launch SingleInstanceNewActivation.main() to pass arguments to another instance + options.AppendValue(_T("-Djava.library.path"), + package.GetPackageAppDirectory() + FilePath::PathSeparator() + + package.GetPackageLauncherDirectory()); + options.AppendValue(_T("-Djava.launcher.path"), + package.GetPackageLauncherDirectory()); + // launch SingleInstanceNewActivation.main() to pass arguments to + // another instance options.AppendValue(_T("-m")); - options.AppendValue(_T("jdk.packager.services/jdk.packager.services.singleton.SingleInstanceNewActivation")); + options.AppendValue( + _T("jdk.packager.services/jdk.packager.services.singleton.SingleInstanceNewActivation")); configureLibrary(); @@ -326,8 +339,8 @@ void JavaVirtualMachine::configureLibrary() { Platform& platform = Platform::GetInstance(); Package& package = Package::GetInstance(); - // TODO: Clean this up. Because of bug JDK-8131321 the opening of the PE file - // fails in WindowsPlatform.cpp on the check to + // TODO: Clean this up. Because of bug JDK-8131321 the opening of the + // PE file ails in WindowsPlatform.cpp on the check to // if (pNTHeader->Signature == IMAGE_NT_SIGNATURE) TString libName = package.GetJVMLibraryFileName(); #ifdef _WIN64 @@ -336,12 +349,14 @@ } #else javaLibrary.AddDependencies( - platform.FilterOutRuntimeDependenciesForPlatform(platform.GetLibraryImports(libName))); + platform.FilterOutRuntimeDependenciesForPlatform( + platform.GetLibraryImports(libName))); #endif javaLibrary.Load(libName); } -bool JavaVirtualMachine::launchVM(JavaOptions& options, std::list& vmargs, bool addSiProcessId) { +bool JavaVirtualMachine::launchVM(JavaOptions& options, + std::list& vmargs, bool addSiProcessId) { Platform& platform = Platform::GetInstance(); Package& package = Package::GetInstance(); @@ -350,7 +365,8 @@ // filter out the psn since they it's not expected in the app if (platform.IsMainThread() == false) { std::list loptions = options.ToList(); - vmargs.splice(vmargs.end(), loptions, loptions.begin(), loptions.end()); + vmargs.splice(vmargs.end(), loptions, + loptions.begin(), loptions.end()); } #else std::list loptions = options.ToList(); @@ -378,21 +394,22 @@ std::string arg = PlatformString(item).toStdString(); #ifdef DEBUG printf("%i %s\n", index, arg.c_str()); -#endif //DEBUG +#endif // DEBUG argv[index] = PlatformString::duplicate(arg.c_str()); index++; } argv[argc] = NULL; -// On Mac we can only free the boot fields if the calling thread is not the main thread. +// On Mac we can only free the boot fields if the calling thread is +// not the main thread. #ifdef MAC if (platform.IsMainThread() == false) { package.FreeBootFields(); } #else package.FreeBootFields(); -#endif //MAC +#endif // MAC if (javaLibrary.JavaVMCreate(argc, argv.GetData()) == true) { return true; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/JavaVirtualMachine.h --- a/src/jdk.packager/share/native/library/common/JavaVirtualMachine.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/JavaVirtualMachine.h Wed Oct 17 13:50:11 2018 -0400 @@ -89,7 +89,8 @@ JavaLibrary javaLibrary; void configureLibrary(); - bool launchVM(JavaOptions& options, std::list& vmargs, bool addSiProcessId); + bool launchVM(JavaOptions& options, std::list& vmargs, + bool addSiProcessId); public: JavaVirtualMachine(); ~JavaVirtualMachine(void); @@ -100,4 +101,4 @@ bool RunVM(JvmLaunchType type); -#endif //JAVAVIRTUALMACHINE_H +#endif // JAVAVIRTUALMACHINE_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/LinuxPlatform.cpp --- a/src/jdk.packager/share/native/library/common/LinuxPlatform.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/LinuxPlatform.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -56,7 +56,8 @@ return result; } -LinuxPlatform::LinuxPlatform(void) : Platform(), GenericPlatform(), PosixPlatform() { +LinuxPlatform::LinuxPlatform(void) : Platform(), + GenericPlatform(), PosixPlatform() { FMainThread = pthread_self(); } @@ -64,22 +65,26 @@ } void LinuxPlatform::ShowMessage(TString title, TString description) { - printf("%s %s\n", PlatformString(title).toPlatformString(), PlatformString(description).toPlatformString()); + printf("%s %s\n", PlatformString(title).toPlatformString(), + PlatformString(description).toPlatformString()); fflush(stdout); } void LinuxPlatform::ShowMessage(TString description) { TString appname = GetModuleFileName(); appname = FilePath::ExtractFileName(appname); - ShowMessage(PlatformString(appname).toPlatformString(), PlatformString(description).toPlatformString()); + ShowMessage(PlatformString(appname).toPlatformString(), + PlatformString(description).toPlatformString()); } -TCHAR* LinuxPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) { +TCHAR* LinuxPlatform::ConvertStringToFileSystemString(TCHAR* Source, + bool &release) { // Not Implemented. return NULL; } -TCHAR* LinuxPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) { +TCHAR* LinuxPlatform::ConvertFileSystemStringToString(TCHAR* Source, + bool &release) { // Not Implemented. return NULL; } @@ -89,7 +94,8 @@ TString result; DynamicBuffer buffer(MAX_PATH); - if ((len = readlink("/proc/self/exe", buffer.GetData(), MAX_PATH - 1)) != -1) { + if ((len = readlink("/proc/self/exe", buffer.GetData(), + MAX_PATH - 1)) != -1) { buffer[len] = '\0'; result = buffer.GetData(); } @@ -111,7 +117,7 @@ TString home = GetEnv(_T("HOME")); if (home.empty() == false) { - result += FilePath::IncludeTrailingSeparater(home) + _T(".local"); + result += FilePath::IncludeTrailingSeparator(home) + _T(".local"); } return result; @@ -121,7 +127,8 @@ IniFile *result = new IniFile(); if (result->LoadFromFile(FileName) == false) { - // New property file format was not found, attempt to load old property file format. + // New property file format was not found, + // attempt to load old property file format. Helpers::LoadOldConfigFile(FileName, result); } @@ -129,11 +136,11 @@ } TString LinuxPlatform::GetBundledJVMLibraryFileName(TString RuntimePath) { - TString result = FilePath::IncludeTrailingSeparater(RuntimePath) + + TString result = FilePath::IncludeTrailingSeparator(RuntimePath) + "lib/libjli.so"; if (FilePath::FileExists(result) == false) { - result = FilePath::IncludeTrailingSeparater(RuntimePath) + + result = FilePath::IncludeTrailingSeparator(RuntimePath) + "lib/jli/libjli.so"; if (FilePath::FileExists(result) == false) { printf("Cannot find libjli.so!"); @@ -190,10 +197,10 @@ } #endif //DEBUG -//-------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------- -#ifndef __UNIX_DEPLOY_PLATFORM__ -#define __UNIX_DEPLOY_PLATFORM__ +#ifndef __UNIX_PACKAGER_PLATFORM__ +#define __UNIX_PACKAGER_PLATFORM__ /** Provide an abstraction for difference in the platform APIs, e.g. string manipulation functions, etc. */ @@ -206,25 +213,26 @@ #define _T(x) x -#define DEPLOY_MULTIBYTE_SNPRINTF snprintf +#define PACKAGER_MULTIBYTE_SNPRINTF snprintf -#define DEPLOY_SNPRINTF(buffer, sizeOfBuffer, count, format, ...) \ +#define PACKAGER_SNPRINTF(buffer, sizeOfBuffer, count, format, ...) \ snprintf((buffer), (count), (format), __VA_ARGS__) -#define DEPLOY_PRINTF(format, ...) \ +#define PACKAGER_PRINTF(format, ...) \ printf((format), ##__VA_ARGS__) -#define DEPLOY_FPRINTF(dest, format, ...) \ +#define PACKAGER_FPRINTF(dest, format, ...) \ fprintf((dest), (format), __VA_ARGS__) -#define DEPLOY_SSCANF(buf, format, ...) \ +#define PACKAGER_SSCANF(buf, format, ...) \ sscanf((buf), (format), __VA_ARGS__) -#define DEPLOY_STRDUP(strSource) \ +#define PACKAGER_STRDUP(strSource) \ strdup((strSource)) //return "error code" (like on Windows) -static int DEPLOY_STRNCPY(char *strDest, size_t numberOfElements, const char *strSource, size_t count) { +static int PACKAGER_STRNCPY(char *strDest, size_t numberOfElements, + const char *strSource, size_t count) { char *s = strncpy(strDest, strSource, count); // Duplicate behavior of the Windows' _tcsncpy_s() by adding a NULL // terminator at the end of the string. @@ -236,78 +244,78 @@ return (s == strDest) ? 0 : 1; } -#define DEPLOY_STRICMP(x, y) \ +#define PACKAGER_STRICMP(x, y) \ strcasecmp((x), (y)) -#define DEPLOY_STRNICMP(x, y, cnt) \ +#define PACKAGER_STRNICMP(x, y, cnt) \ strncasecmp((x), (y), (cnt)) -#define DEPLOY_STRNCMP(x, y, cnt) \ +#define PACKAGER_STRNCMP(x, y, cnt) \ strncmp((x), (y), (cnt)) -#define DEPLOY_STRLEN(x) \ +#define PACKAGER_STRLEN(x) \ strlen((x)) -#define DEPLOY_STRSTR(x, y) \ +#define PACKAGER_STRSTR(x, y) \ strstr((x), (y)) -#define DEPLOY_STRCHR(x, y) \ +#define PACKAGER_STRCHR(x, y) \ strchr((x), (y)) -#define DEPLOY_STRRCHR(x, y) \ +#define PACKAGER_STRRCHR(x, y) \ strrchr((x), (y)) -#define DEPLOY_STRPBRK(x, y) \ +#define PACKAGER_STRPBRK(x, y) \ strpbrk((x), (y)) -#define DEPLOY_GETENV(x) \ +#define PACKAGER_GETENV(x) \ getenv((x)) -#define DEPLOY_PUTENV(x) \ +#define PACKAGER_PUTENV(x) \ putenv((x)) -#define DEPLOY_STRCMP(x, y) \ +#define PACKAGER_STRCMP(x, y) \ strcmp((x), (y)) -#define DEPLOY_STRCPY(x, y) \ +#define PACKAGER_STRCPY(x, y) \ strcpy((x), (y)) -#define DEPLOY_STRCAT(x, y) \ +#define PACKAGER_STRCAT(x, y) \ strcat((x), (y)) -#define DEPLOY_ATOI(x) \ +#define PACKAGER_ATOI(x) \ atoi((x)) -#define DEPLOY_FOPEN(x, y) \ +#define PACKAGER_FOPEN(x, y) \ fopen((x), (y)) -#define DEPLOY_FGETS(x, y, z) \ +#define PACKAGER_FGETS(x, y, z) \ fgets((x), (y), (z)) -#define DEPLOY_REMOVE(x) \ +#define PACKAGER_REMOVE(x) \ remove((x)) -#define DEPLOY_SPAWNV(mode, cmd, args) \ +#define PACKAGER_SPAWNV(mode, cmd, args) \ spawnv((mode), (cmd), (args)) -#define DEPLOY_ISDIGIT(ch) isdigit(ch) +#define PACKAGER_ISDIGIT(ch) isdigit(ch) // for non-unicode, just return the input string for // the following 2 conversions -#define DEPLOY_NEW_MULTIBYTE(message) message +#define PACKAGER_NEW_MULTIBYTE(message) message -#define DEPLOY_NEW_FROM_MULTIBYTE(message) message +#define PACKAGER_NEW_FROM_MULTIBYTE(message) message // for non-unicode, no-op for the relase operation // since there is no memory allocated for the // string conversions -#define DEPLOY_RELEASE_MULTIBYTE(tmpMBCS) +#define PACKAGER_RELEASE_MULTIBYTE(tmpMBCS) -#define DEPLOY_RELEASE_FROM_MULTIBYTE(tmpMBCS) +#define PACKAGER_RELEASE_FROM_MULTIBYTE(tmpMBCS) // The size will be used for converting from 1 byte to 1 byte encoding. // Ensure have space for zero-terminator. -#define DEPLOY_GET_SIZE_FOR_ENCODING(message, theLength) (theLength + 1) +#define PACKAGER_GET_SIZE_FOR_ENCODING(message, theLength) (theLength + 1) #endif #define xmlTagType 0 @@ -384,18 +392,53 @@ #define JMP_NO_ERROR 0 #define JMP_OUT_OF_RANGE 1 -#define NEXT_CHAR(p) {if (*p != 0) { p++;} else {longjmp(jmpbuf, JMP_OUT_OF_RANGE);}} -#define NEXT_CHAR_OR_BREAK(p) {if (*p != 0) { p++;} else {break;}} -#define NEXT_CHAR_OR_RETURN(p) {if (*p != 0) { p++;} else {return;}} -#define SKIP_CHARS(p,n) {int i; for (i = 0; i < (n); i++) \ - {if (*p != 0) { p++;} else \ - {longjmp(jmpbuf, JMP_OUT_OF_RANGE);}}} -#define SKIP_CHARS_OR_BREAK(p,n) {int i; for (i = 0; i < (n); i++) \ - {if (*p != 0) { p++;} else {break;}} \ - {if (i < (n)) {break;}}} +#define NEXT_CHAR(p) { \ + if (*p != 0) { \ + p++; \ + } else { \ + longjmp(jmpbuf, JMP_OUT_OF_RANGE); \ + } \ +} +#define NEXT_CHAR_OR_BREAK(p) { \ + if (*p != 0) { \ + p++; \ + } else { \ + break; \ + } \ +} +#define NEXT_CHAR_OR_RETURN(p) { \ + if (*p != 0) { \ + p++; \ + } else { \ + return; \ + } \ +} +#define SKIP_CHARS(p,n) { \ + int i; \ + for (i = 0; i < (n); i++) { \ + if (*p != 0) { \ + p++; \ + } else { \ + longjmp(jmpbuf, JMP_OUT_OF_RANGE); \ + } \ + } \ +} +#define SKIP_CHARS_OR_BREAK(p,n) { \ + int i; \ + for (i = 0; i < (n); i++) { \ + if (*p != 0) { \ + p++; \ + } else { \ + break; \ + } \ + } \ + if (i < (n)) { \ + break; \ + } \ +} -/** Iterates through the null-terminated buffer (i.e., C string) and replaces all - * UTF-8 encoded character >255 with 255 +/** Iterates through the null-terminated buffer (i.e., C string) and + * replaces all UTF-8 encoded character >255 with 255 * * UTF-8 encoding: * @@ -414,8 +457,8 @@ char* q; char c; p = q = buf; - /* We are not using NEXT_CHAR() to check if *q is NULL, as q is output location - and offset for q is smaller than for p. */ + // We are not using NEXT_CHAR() to check if *q is NULL, as q is output + // location and offset for q is smaller than for p. while(*p != '\0') { c = *p; if ( (c & 0x80) == 0) { @@ -438,8 +481,6 @@ *q = '\0'; } -/* --------------------------------------------------------------------- */ - static TCHAR* SkipWhiteSpace(TCHAR *p) { if (p != NULL) { while(iswspace(*p)) @@ -469,10 +510,10 @@ static TCHAR* SkipXMLComment(TCHAR *p) { if (p != NULL) { - if (DEPLOY_STRNCMP(p, _T(""), 3) == 0) { + if (PACKAGER_STRNCMP(p, _T("-->"), 3) == 0) { SKIP_CHARS(p, 3); return p; } @@ -485,7 +526,7 @@ static TCHAR* SkipXMLDocType(TCHAR *p) { if (p != NULL) { - if (DEPLOY_STRNCMP(p, _T("') { @@ -501,10 +542,10 @@ static TCHAR* SkipXMLProlog(TCHAR *p) { if (p != NULL) { - if (DEPLOY_STRNCMP(p, _T(""), 2) == 0) { + if (PACKAGER_STRNCMP(p, _T("?>"), 2) == 0) { SKIP_CHARS(p, 2); return p; } @@ -522,38 +563,38 @@ static void ConvertBuiltInEntities(TCHAR* p) { TCHAR* q; q = p; - /* We are not using NEXT_CHAR() to check if *q is NULL, as q is output location - and offset for q is smaller than for p. */ + // We are not using NEXT_CHAR() to check if *q is NULL, + // as q is output location and offset for q is smaller than for p. while(*p) { - if (IsPCData(p)) { - /* dont convert &xxx values within PData */ - TCHAR *end; - end = SkipPCData(p); - while(p < end) { - *q++ = *p; - NEXT_CHAR(p); + if (IsPCData(p)) { + /* dont convert &xxx values within PData */ + TCHAR *end; + end = SkipPCData(p); + while(p < end) { + *q++ = *p; + NEXT_CHAR(p); + } + } else { + if (PACKAGER_STRNCMP(p, _T("&"), 5) == 0) { + *q++ = '&'; + SKIP_CHARS(p, 5); + } else if (PACKAGER_STRNCMP(p, _T("<"), 4) == 0) { + *q = '<'; + SKIP_CHARS(p, 4); + } else if (PACKAGER_STRNCMP(p, _T(">"), 4) == 0) { + *q = '>'; + SKIP_CHARS(p, 4); + } else if (PACKAGER_STRNCMP(p, _T("'"), 6) == 0) { + *q = '\''; + SKIP_CHARS(p, 6); + } else if (PACKAGER_STRNCMP(p, _T(""e;"), 7) == 0) { + *q = '\"'; + SKIP_CHARS(p, 7); + } else { + *q++ = *p; + NEXT_CHAR(p); + } } - } else { - if (DEPLOY_STRNCMP(p, _T("&"), 5) == 0) { - *q++ = '&'; - SKIP_CHARS(p, 5); - } else if (DEPLOY_STRNCMP(p, _T("<"), 4) == 0) { - *q = '<'; - SKIP_CHARS(p, 4); - } else if (DEPLOY_STRNCMP(p, _T(">"), 4) == 0) { - *q = '>'; - SKIP_CHARS(p, 4); - } else if (DEPLOY_STRNCMP(p, _T("'"), 6) == 0) { - *q = '\''; - SKIP_CHARS(p, 6); - } else if (DEPLOY_STRNCMP(p, _T(""e;"), 7) == 0) { - *q = '\"'; - SKIP_CHARS(p, 7); - } else { - *q++ = *p; - NEXT_CHAR(p); - } - } } *q = '\0'; } @@ -588,7 +629,7 @@ } CurTokenType = type; - DEPLOY_STRNCPY(CurTokenName, len + 1, start, len); + PACKAGER_STRNCPY(CurTokenName, len + 1, start, len); CurTokenName[len] = '\0'; } @@ -727,7 +768,7 @@ if (CurTokenType == TOKEN_BEGIN_TAG) { /* Create node for new element tag */ - node = CreateXMLNode(xmlTagType, DEPLOY_STRDUP(CurTokenName)); + node = CreateXMLNode(xmlTagType, PACKAGER_STRDUP(CurTokenName)); /* We need to save root node pointer to be able to cleanup if an error happens during parsing */ if(!root_node) { @@ -769,21 +810,22 @@ /* Find closing bracket '>' for end tag */ do { GetNextToken(); - } while(CurTokenType != TOKEN_EOF && CurTokenType != TOKEN_CLOSE_BRACKET); + } while(CurTokenType != TOKEN_EOF && + CurTokenType != TOKEN_CLOSE_BRACKET); GetNextToken(); } } /* Continue parsing rest on same level */ if (CurTokenType != TOKEN_EOF) { - /* Parse rest of stream at same level */ - node->_next = ParseXMLElement(); + /* Parse rest of stream at same level */ + node->_next = ParseXMLElement(); } return node; } else if (CurTokenType == TOKEN_PCDATA) { /* Create node for pcdata */ - node = CreateXMLNode(xmlPCDataType, DEPLOY_STRDUP(CurTokenName)); + node = CreateXMLNode(xmlPCDataType, PACKAGER_STRDUP(CurTokenName)); /* We need to save root node pointer to be able to cleanup if an error happens during parsing */ if(!root_node) { @@ -843,7 +885,7 @@ free(name); name = NULL; } - name = DEPLOY_STRDUP(CurTokenName); + name = PACKAGER_STRDUP(CurTokenName); /* Skip any whitespace */ CurPos = q; @@ -875,80 +917,80 @@ //Note: no need to free name and CurTokenName duplicate; they're assigned // to an XMLAttribute structure in CreateXMLAttribute - return CreateXMLAttribute(name, DEPLOY_STRDUP(CurTokenName)); + return CreateXMLAttribute(name, PACKAGER_STRDUP(CurTokenName)); } void FreeXMLDocument(XMLNode* root) { - if (root == NULL) return; - FreeXMLDocument(root->_sub); - FreeXMLDocument(root->_next); - FreeXMLAttribute(root->_attributes); - free(root->_name); - free(root); + if (root == NULL) return; + FreeXMLDocument(root->_sub); + FreeXMLDocument(root->_next); + FreeXMLAttribute(root->_attributes); + free(root->_name); + free(root); } static void FreeXMLAttribute(XMLAttribute* attr) { - if (attr == NULL) return; - free(attr->_name); - free(attr->_value); - FreeXMLAttribute(attr->_next); - free(attr); + if (attr == NULL) return; + free(attr->_name); + free(attr->_value); + FreeXMLAttribute(attr->_next); + free(attr); } /* Find element at current level with a given name */ XMLNode* FindXMLChild(XMLNode* root, const TCHAR* name) { - if (root == NULL) return NULL; + if (root == NULL) return NULL; - if (root->_type == xmlTagType && DEPLOY_STRCMP(root->_name, name) == 0) { - return root; - } + if (root->_type == xmlTagType && PACKAGER_STRCMP(root->_name, name) == 0) { + return root; + } - return FindXMLChild(root->_next, name); + return FindXMLChild(root->_next, name); } /* Search for an attribute with the given name and returns the contents. Returns NULL if * attribute is not found */ TCHAR* FindXMLAttribute(XMLAttribute* attr, const TCHAR* name) { - if (attr == NULL) return NULL; - if (DEPLOY_STRCMP(attr->_name, name) == 0) return attr->_value; - return FindXMLAttribute(attr->_next, name); + if (attr == NULL) return NULL; + if (PACKAGER_STRCMP(attr->_name, name) == 0) return attr->_value; + return FindXMLAttribute(attr->_next, name); } void PrintXMLDocument(XMLNode* node, int indt) { - if (node == NULL) return; + if (node == NULL) return; - if (node->_type == xmlTagType) { - DEPLOY_PRINTF(_T("\n")); - indent(indt); - DEPLOY_PRINTF(_T("<%s"), node->_name); - PrintXMLAttributes(node->_attributes); - if (node->_sub == NULL) { - DEPLOY_PRINTF(_T("/>\n")); - } else { - DEPLOY_PRINTF(_T(">")); - PrintXMLDocument(node->_sub, indt + 1); - indent(indt); - DEPLOY_PRINTF(_T(""), node->_name); - } - } else { - DEPLOY_PRINTF(_T("%s"), node->_name); - } - PrintXMLDocument(node->_next, indt); + if (node->_type == xmlTagType) { + PACKAGER_PRINTF(_T("\n")); + indent(indt); + PACKAGER_PRINTF(_T("<%s"), node->_name); + PrintXMLAttributes(node->_attributes); + if (node->_sub == NULL) { + PACKAGER_PRINTF(_T("/>\n")); + } else { + PACKAGER_PRINTF(_T(">")); + PrintXMLDocument(node->_sub, indt + 1); + indent(indt); + PACKAGER_PRINTF(_T(""), node->_name); + } + } else { + PACKAGER_PRINTF(_T("%s"), node->_name); + } + PrintXMLDocument(node->_next, indt); } static void PrintXMLAttributes(XMLAttribute* attr) { - if (attr == NULL) return; + if (attr == NULL) return; - DEPLOY_PRINTF(_T(" %s=\"%s\""), attr->_name, attr->_value); - PrintXMLAttributes(attr->_next); + PACKAGER_PRINTF(_T(" %s=\"%s\""), attr->_name, attr->_value); + PrintXMLAttributes(attr->_next); } static void indent(int indt) { int i; for(i = 0; i < indt; i++) { - DEPLOY_PRINTF(_T(" ")); + PACKAGER_PRINTF(_T(" ")); } } @@ -957,7 +999,7 @@ static TCHAR* SkipPCData(TCHAR *p) { - TCHAR *end = DEPLOY_STRSTR(p, CDEnd); + TCHAR *end = PACKAGER_STRSTR(p, CDEnd); if (end != NULL) { return end+sizeof(CDEnd); } @@ -966,12 +1008,13 @@ static int IsPCData(TCHAR *p) { const int size = sizeof(CDStart); - return (DEPLOY_STRNCMP(CDStart, p, size) == 0); + return (PACKAGER_STRNCMP(CDStart, p, size) == 0); } -//-------------------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------- -LinuxJavaUserPreferences::LinuxJavaUserPreferences(void) : JavaUserPreferences() { +LinuxJavaUserPreferences::LinuxJavaUserPreferences(void) : + JavaUserPreferences() { } LinuxJavaUserPreferences::~LinuxJavaUserPreferences(void) { @@ -981,10 +1024,10 @@ TString result; struct passwd *pw = getpwuid(getuid()); TString homedir = pw->pw_dir; - TString userOverrideFileName = FilePath::IncludeTrailingSeparater(homedir) + - FilePath::IncludeTrailingSeparater(_T(".java/.userPrefs")) + - FilePath::IncludeTrailingSeparater(Appid) + - _T("JVMUserOptions/prefs.xml"); + TString userOverrideFileName = FilePath::IncludeTrailingSeparator(homedir) + + FilePath::IncludeTrailingSeparator(_T(".java/.userPrefs")) + + FilePath::IncludeTrailingSeparator(Appid) + + _T("JVMUserOptions/prefs.xml"); if (FilePath::FileExists(userOverrideFileName) == true) { result = userOverrideFileName; @@ -1055,31 +1098,35 @@ } namespace { -template -class DllFunction { - const Library& lib; - funcType funcPtr; - std::string theName; + template + class DllFunction { + const Library& lib; + funcType funcPtr; + std::string theName; -public: - DllFunction(const Library& library, const std::string &funcName): lib(library) { - funcPtr = reinterpret_cast(lib.GetProcAddress(funcName)); - if (!funcPtr) { - throw std::runtime_error("Failed to load function \"" + funcName + "\" from \"" + library.GetName() + "\" library"); + public: + DllFunction(const Library& library, + const std::string &funcName): lib(library) { + funcPtr = reinterpret_cast(lib.GetProcAddress(funcName)); + if (!funcPtr) { + throw std::runtime_error("Failed to load function \"" + + funcName + "\" from \"" + + library.GetName() + "\" library"); + } } - } - operator funcType() const { - return funcPtr; - } -}; + operator funcType() const { + return funcPtr; + } + }; } // namespace extern "C" { typedef Status (*XInitThreadsFuncPtr)(); typedef Display* (*XOpenDisplayFuncPtr)(char *display_name); -typedef Atom (*XInternAtomFuncPtr)(Display *display, char *atom_name, Bool only_if_exists); +typedef Atom (*XInternAtomFuncPtr)( + Display *display, char *atom_name, Bool only_if_exists); typedef Window (*XDefaultRootWindowFuncPtr)(Display *display); @@ -1108,32 +1155,37 @@ return; } - DllFunction XDefaultRootWindowFunc(libX11, "XDefaultRootWindow"); + DllFunction XDefaultRootWindowFunc(libX11, + "XDefaultRootWindow"); searchWindowHelper(XDefaultRootWindowFunc(_display)); reactivateProcess(); - DllFunction XCloseDisplayFunc(libX11, "XCloseDisplay"); + DllFunction XCloseDisplayFunc(libX11, + "XCloseDisplay"); XCloseDisplayFunc(_display); } extern "C" { -typedef int (*XGetWindowPropertyFuncPtr)(Display *display, Window w, Atom property, - long long_offset, long long_length, Bool d, Atom req_type, Atom *actual_type_return, +typedef int (*XGetWindowPropertyFuncPtr)( + Display *display, Window w, Atom property, long long_offset, + long long_length, Bool d, Atom req_type, Atom *actual_type_return, int *actual_format_return, unsigned long *nitems_return, unsigned long *bytes_after_return, unsigned char **prop_return); -typedef Status (*XQueryTreeFuncPtr)(Display *display, Window w, Window *root_return, - Window *parent_return, Window **children_return, unsigned int *nchildren_return); +typedef Status (*XQueryTreeFuncPtr)( + Display *display, Window w, Window *root_return, Window *parent_return, + Window **children_return, unsigned int *nchildren_return); typedef int (*XFreeFuncPtr)(void *data); } void ProcessReactivator::searchWindowHelper(Window w) { - DllFunction XGetWindowPropertyFunc(libX11, "XGetWindowProperty"); + DllFunction XGetWindowPropertyFunc(libX11, + "XGetWindowProperty"); DllFunction XFreeFunc(libX11, "XFree"); @@ -1141,8 +1193,8 @@ int format; unsigned long num, bytesAfter; unsigned char* propPid = 0; - if (Success == XGetWindowPropertyFunc(_display, w, _atomPid, 0, 1, False, XA_CARDINAL, - &type, &format, &num, &bytesAfter, &propPid)) { + if (Success == XGetWindowPropertyFunc(_display, w, _atomPid, 0, 1, + False, XA_CARDINAL, &type, &format, &num, &bytesAfter, &propPid)) { if (propPid != 0) { if (_pid == *((pid_t *)propPid)) { _result.push_back(w); @@ -1156,7 +1208,8 @@ Window root, parent; Window* child; unsigned int numChildren; - if (0 != XQueryTreeFunc(_display, w, &root, &parent, &child, &numChildren)) { + if (0 != XQueryTreeFunc(_display, w, &root, + &parent, &child, &numChildren)) { for (unsigned int i = 0; i < numChildren; i++) { searchWindowHelper(child[i]); } @@ -1176,7 +1229,8 @@ void ProcessReactivator::reactivateProcess() { - DllFunction XGetWindowAttributesFunc(libX11, "XGetWindowAttributes"); + DllFunction XGetWindowAttributesFunc(libX11, + "XGetWindowAttributes"); DllFunction XSendEventFunc(libX11, "XSendEvent"); @@ -1184,11 +1238,13 @@ DllFunction XInternAtomFunc(libX11, "XInternAtom"); - for (std::list::const_iterator it = _result.begin(); it != _result.end(); it++) { + for (std::list::const_iterator it = _result.begin(); + it != _result.end(); it++) { // try sending an event to activate window, // after that we can try to raise it. XEvent xev; - Atom atom = XInternAtomFunc (_display, (char*)"_NET_ACTIVE_WINDOW", False); + Atom atom = XInternAtomFunc ( + _display, (char*)"_NET_ACTIVE_WINDOW", False); xev.xclient.type = ClientMessage; xev.xclient.serial = 0; xev.xclient.send_event = True; @@ -1209,6 +1265,5 @@ } } -//-------------------------------------------------------------------------------------------------- #endif // LINUX diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/LinuxPlatform.h --- a/src/jdk.packager/share/native/library/common/LinuxPlatform.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/LinuxPlatform.h Wed Oct 17 13:50:11 2018 -0400 @@ -54,8 +54,10 @@ virtual void ShowMessage(TString title, TString description); virtual void ShowMessage(TString description); - virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release); - virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release); + virtual TCHAR* ConvertStringToFileSystemString( + TCHAR* Source, bool &release); + virtual TCHAR* ConvertFileSystemStringToString( + TCHAR* Source, bool &release); virtual void SetCurrentDirectory(TString Value); virtual TString GetPackageRootDirectory(); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Lock.cpp --- a/src/jdk.packager/share/native/library/common/Lock.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Lock.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -41,40 +41,40 @@ void Lock::Initialize() { #ifdef WINDOWS InitializeCriticalSectionAndSpinCount(&FCriticalSection, 0x00000400); -#endif //WINDOWS +#endif // WINDOWS #ifdef MAC - //FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; -#endif //MAC + // FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; +#endif // MAC #ifdef LINUX - //FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; -#endif //LINUX + // FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; +#endif // LINUX } Lock::~Lock(void) { #ifdef WINDOWS DeleteCriticalSection(&FCriticalSection); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX pthread_mutex_unlock(&FMutex); -#endif //POSIX +#endif // POSIX } void Lock::Enter() { #ifdef WINDOWS EnterCriticalSection(&FCriticalSection); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX pthread_mutex_lock(&FMutex); -#endif //POSIX +#endif // POSIX } void Lock::Leave() { #ifdef WINDOWS LeaveCriticalSection(&FCriticalSection); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX pthread_mutex_unlock(&FMutex); -#endif //POSIX +#endif // POSIX } bool Lock::TryEnter() { @@ -82,10 +82,10 @@ #ifdef WINDOWS if (TryEnterCriticalSection (&FCriticalSection) != 0) result = true; -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX if (pthread_mutex_lock(&FMutex) == 0) result = true; -#endif //POSIX +#endif // POSIX return result; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Lock.h --- a/src/jdk.packager/share/native/library/common/Lock.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Lock.h Wed Oct 17 13:50:11 2018 -0400 @@ -54,4 +54,4 @@ bool TryEnter(); }; -#endif //LOCK_H +#endif // LOCK_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/MacPlatform.h --- a/src/jdk.packager/share/native/library/common/MacPlatform.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/MacPlatform.h Wed Oct 17 13:50:11 2018 -0400 @@ -50,8 +50,10 @@ virtual void ShowMessage(TString title, TString description); virtual void ShowMessage(TString description); - virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release); - virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release); + virtual TCHAR* ConvertStringToFileSystemString( + TCHAR* Source, bool &release); + virtual TCHAR* ConvertFileSystemStringToString( + TCHAR* Source, bool &release); virtual void SetCurrentDirectory(TString Value); virtual TString GetPackageRootDirectory(); @@ -71,7 +73,7 @@ #ifdef DEBUG virtual bool IsNativeDebuggerPresent(); virtual int GetProcessID(); -#endif //DEBUG +#endif // DEBUG }; @@ -82,6 +84,6 @@ virtual bool Load(TString Appid); }; -#endif //MACPLATFORM_H +#endif // MACPLATFORM_H -#endif //MAC +#endif // MAC diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Macros.cpp --- a/src/jdk.packager/share/native/library/common/Macros.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Macros.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -44,7 +44,8 @@ macros.AddMacro(_T("$LAUNCHERDIR"), package.GetPackageLauncherDirectory()); macros.AddMacro(_T("$APPDATADIR"), package.GetAppDataDirectory()); - TString javaHome = FilePath::ExtractFilePath(package.GetJVMLibraryFileName()); + TString javaHome = + FilePath::ExtractFilePath(package.GetJVMLibraryFileName()); macros.AddMacro(_T("$JREHOME"), javaHome); // App CDS Macros diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Macros.h --- a/src/jdk.packager/share/native/library/common/Macros.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Macros.h Wed Oct 17 13:50:11 2018 -0400 @@ -46,4 +46,4 @@ void AddMacro(TString Key, TString Value); }; -#endif //MACROS_H +#endif // MACROS_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Messages.cpp --- a/src/jdk.packager/share/native/library/common/Messages.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Messages.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -36,19 +36,20 @@ FMessages.SetReadOnly(false); FMessages.SetValue(LIBRARY_NOT_FOUND, _T("Failed to find library.")); FMessages.SetValue(FAILED_CREATING_JVM, _T("Failed to create JVM")); - FMessages.SetValue(FAILED_LOCATING_JVM_ENTRY_POINT, _T("Failed to locate JLI_Launch")); + FMessages.SetValue(FAILED_LOCATING_JVM_ENTRY_POINT, + _T("Failed to locate JLI_Launch")); FMessages.SetValue(NO_MAIN_CLASS_SPECIFIED, _T("No main class specified")); FMessages.SetValue(METHOD_NOT_FOUND, _T("No method %s in class %s.")); FMessages.SetValue(CLASS_NOT_FOUND, _T("Class %s not found.")); FMessages.SetValue(ERROR_INVOKING_METHOD, _T("Error invoking method.")); - //FMessages.SetValue(CONFIG_FILE_NOT_FOUND, _T("Configuration file %s is not found.")); - //FMessages.SetValue(BUNDLED_JVM_NOT_FOUND, _T("$JAVAVMLIBRARYNAME is not found in the bundled runtime.")); - FMessages.SetValue(APPCDS_CACHE_FILE_NOT_FOUND, _T("Error: AppCDS cache does not exists:\n%s\n")); + FMessages.SetValue(APPCDS_CACHE_FILE_NOT_FOUND, + _T("Error: AppCDS cache does not exists:\n%s\n")); } Messages& Messages::GetInstance() { //Lock lock; - static Messages instance; // Guaranteed to be destroyed. Instantiated on first use. + static Messages instance; + // Guaranteed to be destroyed. Instantiated on first use. return instance; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Messages.h --- a/src/jdk.packager/share/native/library/common/Messages.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Messages.h Wed Oct 17 13:50:11 2018 -0400 @@ -55,4 +55,4 @@ TString GetMessage(const TString Key); }; -#endif //MESSAGES_H +#endif // MESSAGES_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/OrderedMap.h --- a/src/jdk.packager/share/native/library/common/OrderedMap.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/OrderedMap.h Wed Oct 17 13:50:11 2018 -0400 @@ -74,7 +74,8 @@ typename list_type::iterator FindListItem(const key_type Key) { typename list_type::iterator result = FList.end(); - for (typename list_type::iterator iterator = FList.begin(); iterator != FList.end(); iterator++) { + for (typename list_type::iterator iterator = + FList.begin(); iterator != FList.end(); iterator++) { container_type *item = *iterator; if (item->first == Key) { @@ -120,7 +121,8 @@ } void Clear() { - for (typename list_type::iterator iterator = FList.begin(); iterator != FList.end(); iterator++) { + for (typename list_type::iterator iterator = + FList.begin(); iterator != FList.end(); iterator++) { container_type *item = *iterator; if (item != NULL) { @@ -245,4 +247,4 @@ } }; -#endif //ORDEREDMAP_H +#endif // ORDEREDMAP_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Package.cpp --- a/src/jdk.packager/share/native/library/common/Package.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Package.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -38,7 +38,8 @@ Initialize(); } -TPlatformNumber StringToPercentageOfNumber(TString Value, TPlatformNumber Number) { +TPlatformNumber StringToPercentageOfNumber(TString Value, + TPlatformNumber Number) { TPlatformNumber result = 0; size_t percentage = atoi(PlatformString(Value.c_str())); @@ -62,12 +63,16 @@ } TString appName; TString appVersion; - AutoFreePtr config = platform.GetConfigFile(platform.GetConfigFileName()); + AutoFreePtr config = + platform.GetConfigFile(platform.GetConfigFileName()); std::map keys = platform.GetKeys(); - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[APP_NAME_KEY], appName); - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_VERSION], appVersion); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[APP_NAME_KEY], appName); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_VERSION], appVersion); TString singleInstance; - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APPLICATION_INSTANCE], singleInstance); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_APPLICATION_INSTANCE], singleInstance); if (singleInstance == _T("single")) { TString uniqueID = appName + FBootFields->FAppID + appVersion; // if another instance is running, later we can try to reactivate it @@ -88,51 +93,68 @@ FBootFields->FPackageRootDirectory = platform.GetPackageRootDirectory(); FBootFields->FPackageAppDirectory = platform.GetPackageAppDirectory(); - FBootFields->FPackageLauncherDirectory = platform.GetPackageLauncherDirectory(); + FBootFields->FPackageLauncherDirectory = + platform.GetPackageLauncherDirectory(); FBootFields->FAppDataDirectory = platform.GetAppDataDirectory(); std::map keys = platform.GetKeys(); // Read from configure.cfg/Info.plist - AutoFreePtr config = platform.GetConfigFile(platform.GetConfigFileName()); + AutoFreePtr config = + platform.GetConfigFile(platform.GetConfigFileName()); - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_ID_KEY], FBootFields->FAppID); - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[PACKAGER_APP_DATA_DIR], FBootFields->FPackageAppDataDirectory); - FBootFields->FPackageAppDataDirectory = FilePath::FixPathForPlatform(FBootFields->FPackageAppDataDirectory); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_APP_ID_KEY], FBootFields->FAppID); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[PACKAGER_APP_DATA_DIR], FBootFields->FPackageAppDataDirectory); + FBootFields->FPackageAppDataDirectory = + FilePath::FixPathForPlatform(FBootFields->FPackageAppDataDirectory); // Main JAR. - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINJAR_KEY], FBootFields->FMainJar); - FBootFields->FMainJar = FilePath::IncludeTrailingSeparater(GetPackageAppDirectory()) + - FilePath::FixPathForPlatform(FBootFields->FMainJar); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_MAINJAR_KEY], FBootFields->FMainJar); + FBootFields->FMainJar = + FilePath::IncludeTrailingSeparator(GetPackageAppDirectory()) + + FilePath::FixPathForPlatform(FBootFields->FMainJar); // Main Module. - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINMODULE_KEY], FBootFields->FMainModule); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_MAINMODULE_KEY], FBootFields->FMainModule); // Classpath. - // 1. If the provided class path contains main jar then only use provided class path. + // 1. If the provided class path contains main jar then only use + // provided class path. // 2. If class path provided by config file is empty then add main jar. // 3. If main jar is not in provided class path then add it. - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_CLASSPATH_KEY], FBootFields->FClassPath); - FBootFields->FClassPath = FilePath::FixPathSeparatorForPlatform(FBootFields->FClassPath); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_CLASSPATH_KEY], FBootFields->FClassPath); + FBootFields->FClassPath = + FilePath::FixPathSeparatorForPlatform(FBootFields->FClassPath); if (FBootFields->FClassPath.empty() == true) { FBootFields->FClassPath = GetMainJar(); - } - else if (FBootFields->FClassPath.find(GetMainJar()) == TString::npos) { - FBootFields->FClassPath = GetMainJar() + FilePath::PathSeparator() + FBootFields->FClassPath; + } else if (FBootFields->FClassPath.find(GetMainJar()) == TString::npos) { + FBootFields->FClassPath = GetMainJar() + + FilePath::PathSeparator() + FBootFields->FClassPath; } // Modulepath. - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MODULEPATH_KEY], FBootFields->FModulePath); - FBootFields->FModulePath = FilePath::FixPathSeparatorForPlatform(FBootFields->FModulePath); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_MODULEPATH_KEY], FBootFields->FModulePath); + FBootFields->FModulePath = + FilePath::FixPathSeparatorForPlatform(FBootFields->FModulePath); // Main Class. - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINCLASSNAME_KEY], FBootFields->FMainClassName); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_MAINCLASSNAME_KEY], FBootFields->FMainClassName); // Splash Screen. - if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_SPLASH_KEY], FBootFields->FSplashScreenFileName) == true) { - FBootFields->FSplashScreenFileName = FilePath::IncludeTrailingSeparater(GetPackageAppDirectory()) + - FilePath::FixPathForPlatform(FBootFields->FSplashScreenFileName); + if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_SPLASH_KEY], + FBootFields->FSplashScreenFileName) == true) { + FBootFields->FSplashScreenFileName = + FilePath::IncludeTrailingSeparator(GetPackageAppDirectory()) + + FilePath::FixPathForPlatform(FBootFields->FSplashScreenFileName); if (FilePath::FileExists(FBootFields->FSplashScreenFileName) == false) { FBootFields->FSplashScreenFileName = _T(""); @@ -140,7 +162,8 @@ } // Runtime. - config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[JVM_RUNTIME_KEY], FBootFields->FJVMRuntimeDirectory); + config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[JVM_RUNTIME_KEY], FBootFields->FJVMRuntimeDirectory); // Read jvmargs. PromoteAppCDSState(config); @@ -156,7 +179,8 @@ } // Read jvmuserarg defaults. - config->GetSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], FDefaultJVMUserArgs); + config->GetSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], + FDefaultJVMUserArgs); // Load JVM user overrides. TString jvmUserArgsConfigFileName = GetJVMUserArgsConfigFileName(); @@ -166,15 +190,18 @@ IniFile userConfig; if (userConfig.LoadFromFile(jvmUserArgsConfigFileName) == false) { - // New property file format was not found, attempt to load old property file format. - userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], FJVMUserArgsOverrides); + // New property file format was not found, + // attempt to load old property file format. + userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], + FJVMUserArgsOverrides); } - userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], FJVMUserArgsOverrides); - } - else { + userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], + FJVMUserArgsOverrides); + } else { // Attemp to load java.util.prefs for legacy JVM user overrides. - AutoFreePtr javaPreferences(JavaUserPreferences::CreateInstance()); + AutoFreePtr javaPreferences( + JavaUserPreferences::CreateInstance()); if (javaPreferences->Load(GetAppID()) == true) { FJVMUserArgsOverrides = javaPreferences->GetData(); @@ -184,20 +211,24 @@ // Auto Memory. TString autoMemory; - if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_MEMORY], autoMemory) == true) { + if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_APP_MEMORY], autoMemory) == true) { if (autoMemory == _T("auto") || autoMemory == _T("100%")) { FBootFields->FMemoryState = PackageBootFields::msAuto; FBootFields->FMemorySize = platform.GetMemorySize(); - } - else if (autoMemory.length() == 2 && isdigit(autoMemory[0]) && autoMemory[1] == '%') { + } else if (autoMemory.length() == 2 && isdigit(autoMemory[0]) && + autoMemory[1] == '%') { FBootFields->FMemoryState = PackageBootFields::msAuto; - FBootFields->FMemorySize = StringToPercentageOfNumber(autoMemory.substr(0, 1), platform.GetMemorySize()); - } - else if (autoMemory.length() == 3 && isdigit(autoMemory[0]) && isdigit(autoMemory[1]) && autoMemory[2] == '%') { + FBootFields->FMemorySize = + StringToPercentageOfNumber(autoMemory.substr(0, 1), + platform.GetMemorySize()); + } else if (autoMemory.length() == 3 && isdigit(autoMemory[0]) && + isdigit(autoMemory[1]) && autoMemory[2] == '%') { FBootFields->FMemoryState = PackageBootFields::msAuto; - FBootFields->FMemorySize = StringToPercentageOfNumber(autoMemory.substr(0, 2), platform.GetMemorySize()); - } - else { + FBootFields->FMemorySize = + StringToPercentageOfNumber(autoMemory.substr(0, 2), + platform.GetMemorySize()); + } else { FBootFields->FMemoryState = PackageBootFields::msManual; FBootFields->FMemorySize = 0; } @@ -205,7 +236,8 @@ // Debug TString debug; - if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_DEBUG], debug) == true) { + if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], + keys[CONFIG_APP_DEBUG], debug) == true) { FBootFields->FArgs.push_back(debug); } @@ -229,7 +261,8 @@ // -> cdsGenCache If -Xappcds:generatecache // -> cdsDisabled If -Xappcds:off // -> cdsEnabled If "AppCDSJVMOptions" section is present -// -> cdsAuto If "AppCDSJVMOptions" section is present and app.appcds.cache=auto +// -> cdsAuto If "AppCDSJVMOptions" section is present and +// app.appcds.cache=auto // -> cdsDisabled Default // void Package::PromoteAppCDSState(ISectionalPropertyContainer* Config) { @@ -247,21 +280,24 @@ } case cdsUninitialized: { - if (Config->ContainsSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS]) == true) { + if (Config->ContainsSection( + keys[CONFIG_SECTION_APPCDSJVMOPTIONS]) == true) { // If the AppCDS section is present then enable AppCDS. TString appCDSCacheValue; - // If running with AppCDS enabled, and the configuration has been setup so "auto" is enabled, then - // the launcher will attempt to generate the cache file automatically and run the application. - if (Config->GetValue(keys[CONFIG_SECTION_APPLICATION], _T("app.appcds.cache"), appCDSCacheValue) == true && + // If running with AppCDS enabled, and the configuration has + // been setup so "auto" is enabled, then + // the launcher will attempt to generate the cache file + // automatically and run the application. + if (Config->GetValue(keys[CONFIG_SECTION_APPLICATION], + _T("app.appcds.cache"), appCDSCacheValue) == true && appCDSCacheValue == _T("auto")) { platform.SetAppCDSState(cdsAuto); } else { platform.SetAppCDSState(cdsEnabled); } - } - else { + } else { platform.SetAppCDSState(cdsDisabled); } @@ -277,35 +313,44 @@ switch (platform.GetAppCDSState()) { case cdsUninitialized: { throw Exception(_T("Internal Error")); - } + } case cdsDisabled: { - Config->GetSection(keys[CONFIG_SECTION_JVMOPTIONS], FBootFields->FJVMArgs); + Config->GetSection(keys[CONFIG_SECTION_JVMOPTIONS], + FBootFields->FJVMArgs); break; } case cdsGenCache: { - Config->GetSection(keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS], FBootFields->FJVMArgs); + Config->GetSection(keys[ + CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS], + FBootFields->FJVMArgs); break; } case cdsAuto: case cdsEnabled: { if (Config->GetValue(keys[CONFIG_SECTION_APPCDSJVMOPTIONS], - _T( "-XX:SharedArchiveFile"), FBootFields->FAppCDSCacheFileName) == true) { - // File names may contain the incorrect path separators. The cache file name must be - // corrected at this point. + _T( "-XX:SharedArchiveFile"), + FBootFields->FAppCDSCacheFileName) == true) { + // File names may contain the incorrect path separators. + // The cache file name must be corrected at this point. if (FBootFields->FAppCDSCacheFileName.empty() == false) { IniFile* iniConfig = dynamic_cast(Config); if (iniConfig != NULL) { - FBootFields->FAppCDSCacheFileName = FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName); - iniConfig->SetValue(keys[CONFIG_SECTION_APPCDSJVMOPTIONS], - _T( "-XX:SharedArchiveFile"), FBootFields->FAppCDSCacheFileName); + FBootFields->FAppCDSCacheFileName = + FilePath::FixPathForPlatform( + FBootFields->FAppCDSCacheFileName); + iniConfig->SetValue(keys[ + CONFIG_SECTION_APPCDSJVMOPTIONS], + _T( "-XX:SharedArchiveFile"), + FBootFields->FAppCDSCacheFileName); } } - Config->GetSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS], FBootFields->FJVMArgs); + Config->GetSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS], + FBootFields->FJVMArgs); } break; @@ -317,7 +362,8 @@ if (argc > 0) { std::list args; - // Prepare app arguments. Skip value at index 0 - this is path to executable. + // Prepare app arguments. Skip value at index 0 - + // this is path to executable. FBootFields->FCommandName = argv[0]; // Path to executable is at 0 index so start at index 1. @@ -346,7 +392,8 @@ } if (arg == _T("-NSDocumentRevisionsDebugMode")) { - // Ignore -NSDocumentRevisionsDebugMode and the following YES/NO + // Ignore -NSDocumentRevisionsDebugMode and + // the following YES/NO index++; continue; } @@ -362,7 +409,8 @@ } Package& Package::GetInstance() { - static Package instance; // Guaranteed to be destroyed. Instantiated on first use. + static Package instance; + // Guaranteed to be destroyed. Instantiated on first use. return instance; } @@ -389,8 +437,8 @@ return FJVMUserArgsOverrides; } -std::vector GetKeysThatAreNotDuplicates(OrderedMap &Defaults, - OrderedMap &Overrides) { +std::vector GetKeysThatAreNotDuplicates(OrderedMap &Defaults, OrderedMap &Overrides) { std::vector result; std::vector overrideKeys = Overrides.GetKeys(); @@ -410,8 +458,8 @@ return result; } -OrderedMap CreateOrderedMapFromKeyList(OrderedMap &Map, - std::vector &Keys) { +OrderedMap CreateOrderedMapFromKeyList(OrderedMap &Map, std::vector &Keys) { OrderedMap result; for (size_t index = 0; index < Keys.size(); index++) { @@ -431,10 +479,12 @@ OrderedMap overrides = Value; // 1. Remove entries in the overrides that are the same as the defaults. - std::vector overrideKeys = GetKeysThatAreNotDuplicates(defaults, overrides); + std::vector overrideKeys = + GetKeysThatAreNotDuplicates(defaults, overrides); // 2. Create an ordered map from the overrides that weren't removed. - FJVMUserArgsOverrides = CreateOrderedMapFromKeyList(overrides, overrideKeys); + FJVMUserArgsOverrides = + CreateOrderedMapFromKeyList(overrides, overrideKeys); // 3. Overwrite JVM user config overrides with provided key/value pair. SaveJVMUserArgOverrides(FJVMUserArgsOverrides); @@ -447,7 +497,8 @@ IniFile userConfig; Platform& platform = Platform::GetInstance(); std::map keys = platform.GetKeys(); - userConfig.AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], Data); + userConfig.AppendSection( + keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], Data); userConfig.SaveToFile(GetJVMUserArgsConfigFileName()); } @@ -455,8 +506,9 @@ return FJVMUserArgs; } -std::vector GetKeysThatAreNotOverridesOfDefaultValues(OrderedMap &Defaults, - OrderedMap &Overrides) { +std::vector GetKeysThatAreNotOverridesOfDefaultValues( + OrderedMap &Defaults, OrderedMap &Overrides) { std::vector result; std::vector keys = Overrides.GetKeys(); @@ -480,12 +532,16 @@ } void Package::MergeJVMDefaultsWithOverrides() { - // Merge jvmuserarg defaults and jvmuserarg overrides to populate FJVMUserArgs. - // 1. If the key is in the config file and not the java.user.preferences the default value is used, + // Merge jvmuserarg defaults and jvmuserarg overrides to populate + // FJVMUserArgs. + // 1. If the key is in the config file and not the + // java.user.preferences the default value is used, // the one from the config file. - // 2. If the key is in the java.user.preferences then the value from the java.user.preferences is used and + // 2. If the key is in the java.user.preferences then the value + // from the java.user.preferences is used and // the config file value is ignored. - // 3. If the key is not in the config file but it is in the java.user.preferences then it is added anyway. + // 3. If the key is not in the config file but it is in + // the java.user.preferences then it is added anyway. // And if it is removed it won't show back up. FJVMUserArgs.Clear(); FJVMUserArgs.Append(FDefaultJVMUserArgs); @@ -494,7 +550,8 @@ // 1. Iterate over all elements in overrides to see if any items // override a default value. - std::vector keys = GetKeysThatAreNotOverridesOfDefaultValues(FJVMUserArgs, overrides); + std::vector keys = + GetKeysThatAreNotOverridesOfDefaultValues(FJVMUserArgs, overrides); // 2. All remaining items in overrides are appended to the end. @@ -537,10 +594,12 @@ if (FJVMUserArgsConfigFileName.empty()) { Platform& platform = Platform::GetInstance(); - FJVMUserArgsConfigFileName = FilePath::IncludeTrailingSeparater(platform.GetAppDataDirectory()) + - FilePath::IncludeTrailingSeparater(GetPackageAppDataDirectory()) + - FilePath::IncludeTrailingSeparater(_T("packager")) + - _T("jvmuserargs.cfg"); + FJVMUserArgsConfigFileName = FilePath::IncludeTrailingSeparator( + platform.GetAppDataDirectory()) + + FilePath::IncludeTrailingSeparator( + GetPackageAppDataDirectory()) + + FilePath::IncludeTrailingSeparator(_T("packager")) + + _T("jvmuserargs.cfg"); } return FJVMUserArgsConfigFileName; @@ -549,13 +608,15 @@ TString Package::GetAppCDSCacheDirectory() { if (FAppCDSCacheDirectory.empty()) { Platform& platform = Platform::GetInstance(); - FAppCDSCacheDirectory = FilePath::IncludeTrailingSeparater(platform.GetAppDataDirectory()) + - FilePath::IncludeTrailingSeparater(GetPackageAppDataDirectory()) + - _T("cache"); + FAppCDSCacheDirectory = FilePath::IncludeTrailingSeparator( + platform.GetAppDataDirectory()) + + FilePath::IncludeTrailingSeparator( + GetPackageAppDataDirectory()) + _T("cache"); Macros& macros = Macros::GetInstance(); FAppCDSCacheDirectory = macros.ExpandMacros(FAppCDSCacheDirectory); - FAppCDSCacheDirectory = FilePath::FixPathForPlatform(FAppCDSCacheDirectory); + FAppCDSCacheDirectory = + FilePath::FixPathForPlatform(FAppCDSCacheDirectory); } return FAppCDSCacheDirectory; @@ -566,8 +627,10 @@ if (FBootFields->FAppCDSCacheFileName.empty() == false) { Macros& macros = Macros::GetInstance(); - FBootFields->FAppCDSCacheFileName = macros.ExpandMacros(FBootFields->FAppCDSCacheFileName); - FBootFields->FAppCDSCacheFileName = FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName); + FBootFields->FAppCDSCacheFileName = + macros.ExpandMacros(FBootFields->FAppCDSCacheFileName); + FBootFields->FAppCDSCacheFileName = + FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName); } return FBootFields->FAppCDSCacheFileName; @@ -615,7 +678,8 @@ Platform& platform = Platform::GetInstance(); Macros& macros = Macros::GetInstance(); TString jvmRuntimePath = macros.ExpandMacros(GetJVMRuntimeDirectory()); - FBootFields->FJVMLibraryFileName = platform.GetBundledJVMLibraryFileName(jvmRuntimePath); + FBootFields->FJVMLibraryFileName = + platform.GetBundledJVMLibraryFileName(jvmRuntimePath); } return FBootFields->FJVMLibraryFileName; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Package.h --- a/src/jdk.packager/share/native/library/common/Package.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Package.h Wed Oct 17 13:50:11 2018 -0400 @@ -81,13 +81,13 @@ DebugState FDebugging; OrderedMap FJVMUserArgsOverrides; - OrderedMap FDefaultJVMUserArgs; // Contains JVM user defaults - OrderedMap FJVMUserArgs; // Contains a merge of JVM defaults and user overrides - + // Contains JVM user defaults + OrderedMap FDefaultJVMUserArgs; + // Contains a merge of JVM defaults and user overrides + OrderedMap FJVMUserArgs; Package(void); - //void Initialize(); void MergeJVMDefaultsWithOverrides(); TString GetMainJar(); void SaveJVMUserArgOverrides(OrderedMap Data); @@ -140,4 +140,4 @@ DebugState Debugging(); }; -#endif //PACKAGE_H +#endif // PACKAGE_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Platform.cpp --- a/src/jdk.packager/share/native/library/common/Platform.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Platform.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -36,24 +36,22 @@ StaticReadProperty Environment::NewLine; -//-------------------------------------------------------------------------------------------------- +Platform& Platform::GetInstance() { -Platform& Platform::GetInstance() { - //Lock lock(true); #ifdef WINDOWS static WindowsPlatform instance; #endif // WINDOWS + #ifdef LINUX static LinuxPlatform instance; #endif // LINUX + #ifdef MAC static MacPlatform instance; #endif // MAC return instance; } -//-------------------------------------------------------------------------------------------------- - Library::Library() { Initialize(); @@ -86,7 +84,8 @@ void Library::LoadDependencies() { if (FDependentLibraryNames != NULL && FDependenciesLibraries != NULL) { - for (std::vector::const_iterator iterator = FDependentLibraryNames->begin(); + for (std::vector::const_iterator iterator = + FDependentLibraryNames->begin(); iterator != FDependentLibraryNames->end(); iterator++) { Library* library = new Library(); @@ -102,7 +101,8 @@ void Library::UnloadDependencies() { if (FDependenciesLibraries != NULL) { - for (std::vector::const_iterator iterator = FDependenciesLibraries->begin(); + for (std::vector::const_iterator iterator = + FDependenciesLibraries->begin(); iterator != FDependenciesLibraries->end(); iterator++) { Library* library = *iterator; @@ -132,7 +132,8 @@ if (FModule == NULL) { Messages& messages = Messages::GetInstance(); - platform.ShowMessage(messages.GetMessage(LIBRARY_NOT_FOUND), FileName); + platform.ShowMessage(messages.GetMessage(LIBRARY_NOT_FOUND), + FileName); result = false; } else { fname = PlatformString(FileName).toStdString(); @@ -169,7 +170,8 @@ InitializeDependencies(); if (FDependentLibraryNames != NULL) { - for (std::vector::const_iterator iterator = FDependentLibraryNames->begin(); + for (std::vector::const_iterator iterator = + FDependentLibraryNames->begin(); iterator != FDependentLibraryNames->end(); iterator++) { TString fileName = *iterator; AddDependency(fileName); @@ -177,4 +179,3 @@ } } } -//-------------------------------------------------------------------------------------------------- diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/Platform.h --- a/src/jdk.packager/share/native/library/common/Platform.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/Platform.h Wed Oct 17 13:50:11 2018 -0400 @@ -120,13 +120,15 @@ // Config file sections -#define CONFIG_SECTION_APPLICATION _T("CONFIG_SECTION_APPLICATION") -#define CONFIG_SECTION_JVMOPTIONS _T("CONFIG_SECTION_JVMOPTIONS") -#define CONFIG_SECTION_JVMUSEROPTIONS _T("CONFIG_SECTION_JVMUSEROPTIONS") -#define CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS _T("CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS") -#define CONFIG_SECTION_APPCDSJVMOPTIONS _T("CONFIG_SECTION_APPCDSJVMOPTIONS") -#define CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS _T("CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS") -#define CONFIG_SECTION_ARGOPTIONS _T("CONFIG_SECTION_ARGOPTIONS") +#define CONFIG_SECTION_APPLICATION _T("CONFIG_SECTION_APPLICATION") +#define CONFIG_SECTION_JVMOPTIONS _T("CONFIG_SECTION_JVMOPTIONS") +#define CONFIG_SECTION_JVMUSEROPTIONS _T("CONFIG_SECTION_JVMUSEROPTIONS") +#define CONFIG_SECTION_APPCDSJVMOPTIONS _T("CONFIG_SECTION_APPCDSJVMOPTIONS") +#define CONFIG_SECTION_ARGOPTIONS _T("CONFIG_SECTION_ARGOPTIONS") +#define CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS \ + _T("CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS") +#define CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS \ + _T("CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS") // Config file keys. #define CONFIG_VERSION _T("CONFIG_VERSION") @@ -151,7 +153,9 @@ typedef void* Procedure; -template +template class Property { private: ObjectType* FObject; @@ -179,7 +183,8 @@ } }; -template +template class ReadProperty { private: ObjectType* FObject; @@ -200,7 +205,8 @@ } }; -template +template class WriteProperty { private: ObjectType* FObject; @@ -222,7 +228,8 @@ } }; -template +template class StaticProperty { public: StaticProperty() { @@ -280,8 +287,8 @@ virtual bool IsRunning() = 0; virtual bool Terminate() = 0; - virtual bool Execute(const TString Application, const std::vector Arguments, - bool AWait = false) = 0; + virtual bool Execute(const TString Application, + const std::vector Arguments, bool AWait = false) = 0; virtual bool Wait() = 0; virtual TProcessID GetProcessID() = 0; @@ -350,9 +357,11 @@ ISectionalPropertyContainer(void) {} virtual ~ISectionalPropertyContainer(void) {} - virtual bool GetValue(const TString SectionName, const TString Key, TString& Value) = 0; + virtual bool GetValue(const TString SectionName, + const TString Key, TString& Value) = 0; virtual bool ContainsSection(const TString SectionName) = 0; - virtual bool GetSection(const TString SectionName, OrderedMap &Data) = 0; + virtual bool GetSection(const TString SectionName, + OrderedMap &Data) = 0; }; class Environment { @@ -376,7 +385,8 @@ enum DebugState {dsNone, dsNative, dsJava}; enum MessageResponse {mrOK, mrCancel}; -enum AppCDSState {cdsUninitialized, cdsDisabled, cdsEnabled, cdsAuto, cdsGenCache}; +enum AppCDSState {cdsUninitialized, cdsDisabled, + cdsEnabled, cdsAuto, cdsGenCache}; class Platform { private: @@ -400,21 +410,25 @@ public: virtual void ShowMessage(TString title, TString description) = 0; virtual void ShowMessage(TString description) = 0; - virtual MessageResponse ShowResponseMessage(TString title, TString description) = 0; -// virtual MessageResponse ShowResponseMessage(TString description) = 0; + virtual MessageResponse ShowResponseMessage(TString title, + TString description) = 0; virtual void SetCurrentDirectory(TString Value) = 0; // Caller must free result using delete[]. - virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release) = 0; + virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, + bool &release) = 0; // Caller must free result using delete[]. - virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release) = 0; + virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, + bool &release) = 0; // Returns: - // Windows=C:\Users\\AppData\Local\\packager\jvmuserargs.cfg + // Windows=C:\Users\\AppData\Local\ + // \packager\jvmuserargs.cfg // Linux=~/.local//packager/jvmuserargs.cfg - // Mac=~/Library/Application Support//packager/jvmuserargs.cfg + // Mac=~/Library/Application Support/ + // /packager/jvmuserargs.cfg virtual TString GetAppDataDirectory() = 0; virtual TString GetPackageAppDirectory() = 0; @@ -435,7 +449,8 @@ virtual void FreeLibrary(Module Module) = 0; virtual Procedure GetProcAddress(Module Module, std::string MethodName) = 0; virtual std::vector GetLibraryImports(const TString FileName) = 0; - virtual std::vector FilterOutRuntimeDependenciesForPlatform(std::vector Imports) = 0; + virtual std::vector FilterOutRuntimeDependenciesForPlatform( + std::vector Imports) = 0; // Caller must free result. virtual Process* CreateProcess() = 0; @@ -450,7 +465,8 @@ virtual std::map GetKeys() = 0; virtual std::list LoadFromFile(TString FileName) = 0; - virtual void SaveToFile(TString FileName, std::list Contents, bool ownerOnly) = 0; + virtual void SaveToFile(TString FileName, + std::list Contents, bool ownerOnly) = 0; virtual TString GetTempDirectory() = 0; @@ -518,4 +534,4 @@ explicit FileNotFoundException(const TString Message) : Exception(Message) {} }; -#endif //PLATFORM_H +#endif // PLATFORM_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PlatformString.cpp --- a/src/jdk.packager/share/native/library/common/PlatformString.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PlatformString.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,7 @@ #include "PlatformString.h" -#include "Java.h" +#include "JavaTypes.h" #include "Helpers.h" #include @@ -37,8 +37,6 @@ #include "jni.h" -//-------------------------------------------------------------------------------------------------- - #ifdef MAC StringToFileSystemString::StringToFileSystemString(const TString &value) { FRelease = false; @@ -58,8 +56,6 @@ } #endif //MAC -//-------------------------------------------------------------------------------------------------- - #ifdef MAC FileSystemStringToString::FileSystemStringToString(const TCHAR* value) { bool release = false; @@ -79,16 +75,14 @@ #endif //MAC -//-------------------------------------------------------------------------------------------------- - - void PlatformString::initialize() { FWideTStringToFree = NULL; FLength = 0; FData = NULL; } -void PlatformString::CopyString(char *Destination, size_t NumberOfElements, const char *Source) { +void PlatformString::CopyString(char *Destination, + size_t NumberOfElements, const char *Source) { #ifdef WINDOWS strcpy_s(Destination, NumberOfElements, Source); #endif //WINDOWS @@ -101,7 +95,8 @@ } } -void PlatformString::CopyString(wchar_t *Destination, size_t NumberOfElements, const wchar_t *Source) { +void PlatformString::CopyString(wchar_t *Destination, + size_t NumberOfElements, const wchar_t *Source) { #ifdef WINDOWS wcscpy_s(Destination, NumberOfElements, Source); #endif //WINDOWS @@ -129,7 +124,8 @@ } // Owner must free the return value. -MultibyteString PlatformString::WideStringToMultibyteString(const wchar_t* value) { +MultibyteString PlatformString::WideStringToMultibyteString( + const wchar_t* value) { MultibyteString result; size_t count = 0; @@ -142,7 +138,8 @@ if (count > 0) { result.data = new char[count + 1]; - result.length = WideCharToMultiByte(CP_UTF8, 0, value, -1, result.data, (int)count, NULL, NULL); + result.length = WideCharToMultiByte(CP_UTF8, 0, value, -1, + result.data, (int)count, NULL, NULL); #endif //WINDOWS #ifdef POSIX @@ -269,7 +266,6 @@ } TString PlatformString::Format(const TString value, ...) { -//std::string PlatformString::Format(std::string value, ...) { TString result = value; va_list arglist; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PlatformString.h --- a/src/jdk.packager/share/native/library/common/PlatformString.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PlatformString.h Wed Oct 17 13:50:11 2018 -0400 @@ -81,7 +81,9 @@ if (FSize != 0) { FData = new T[FSize]; - Zero(); + if (FData != NULL) { + Zero(); + } } } @@ -96,7 +98,8 @@ #ifdef MAC -// StringToFileSystemString is a stack object. It's usage is simply inline to convert a +// StringToFileSystemString is a stack object. It's usage is +// simply inline to convert a // TString to a file system string. Example: // // return dlopen(StringToFileSystemString(FileName), RTLD_LAZY); @@ -119,7 +122,8 @@ }; -// FileSystemStringToString is a stack object. It's usage is simply inline to convert a +// FileSystemStringToString is a stack object. It's usage is +// simply inline to convert a // file system string to a TString. Example: // // DynamicBuffer buffer(MAX_PATH); @@ -157,10 +161,12 @@ void initialize(); // Caller must free result using delete[]. - static void CopyString(char *Destination, size_t NumberOfElements, const char *Source); + static void CopyString(char *Destination, + size_t NumberOfElements, const char *Source); // Caller must free result using delete[]. - static void CopyString(wchar_t *Destination, size_t NumberOfElements, const wchar_t *Source); + static void CopyString(wchar_t *Destination, + size_t NumberOfElements, const wchar_t *Source); static WideString MultibyteStringToWideString(const char* value); static MultibyteString WideStringToMultibyteString(const wchar_t* value); @@ -207,4 +213,4 @@ }; -#endif //PLATFORMSTRING_H +#endif // PLATFORMSTRING_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PlatformThread.cpp --- a/src/jdk.packager/share/native/library/common/PlatformThread.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PlatformThread.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -40,38 +40,38 @@ self->Execute(); return 0; } -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX void* PlatformThread::Do(void *Data) { PlatformThread* self = (PlatformThread*)Data; self->Execute(); pthread_exit(NULL); } -#endif //POSIX +#endif // POSIX void PlatformThread::Run() { #ifdef WINDOWS FHandle = CreateThread(NULL, 0, Do, this, 0, &FThreadID); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX pthread_create(&FHandle, NULL, Do, this); -#endif //POSIX +#endif // POSIX } void PlatformThread::Terminate() { #ifdef WINDOWS CloseHandle(FHandle); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX pthread_cancel(FHandle); -#endif //POSIX +#endif // POSIX } void PlatformThread::Wait() { #ifdef WINDOWS WaitForSingleObject(FHandle, INFINITE); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX pthread_join(FHandle, NULL); -#endif //POSIX +#endif // POSIX } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PlatformThread.h --- a/src/jdk.packager/share/native/library/common/PlatformThread.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PlatformThread.h Wed Oct 17 13:50:11 2018 -0400 @@ -30,7 +30,7 @@ #ifdef POSIX #include -#endif //POSIX +#endif // POSIX class PlatformThread { @@ -39,14 +39,15 @@ HANDLE FHandle; DWORD FThreadID; static DWORD WINAPI Do(LPVOID lpParam); -#endif //WINDOWS +#endif // WINDOWS #ifdef POSIX pthread_t FHandle; static void* Do(void *threadid); -#endif //POSIX +#endif // POSIX protected: - // Never call directly. Override this method and this is your code that runs in a thread. + // Never call directly. Override this method and this is your code + // that runs in a thread. virtual void Execute() = 0; public: @@ -58,4 +59,4 @@ void Wait(); }; -#endif //PLATFORMTHREAD_H +#endif // PLATFORMTHREAD_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PosixPlatform.cpp --- a/src/jdk.packager/share/native/library/common/PosixPlatform.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PosixPlatform.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -76,7 +76,8 @@ TString fixedName(name); const TString chars("?:*<>/\\"); for (TString::const_iterator it = chars.begin(); it != chars.end(); it++) { - fixedName.erase(std::remove(fixedName.begin(), fixedName.end(), *it), fixedName.end()); + fixedName.erase(std::remove(fixedName.begin(), + fixedName.end(), *it), fixedName.end()); } return fixedName; } @@ -118,10 +119,12 @@ return false; } -MessageResponse PosixPlatform::ShowResponseMessage(TString title, TString description) { +MessageResponse PosixPlatform::ShowResponseMessage(TString title, + TString description) { MessageResponse result = mrCancel; - printf("%s %s (Y/N)\n", PlatformString(title).toPlatformString(), PlatformString(description).toPlatformString()); + printf("%s %s (Y/N)\n", PlatformString(title).toPlatformString(), + PlatformString(description).toPlatformString()); fflush(stdout); std::string input; @@ -134,12 +137,6 @@ return result; } -//MessageResponse PosixPlatform::ShowResponseMessageB(TString description) { -// TString appname = GetModuleFileName(); -// appname = FilePath::ExtractFileName(appname); -// return ShowResponseMessage(appname, description); -//} - void PosixPlatform::SetCurrentDirectory(TString Value) { chdir(StringToFileSystemString(Value)); } @@ -152,16 +149,19 @@ dlclose(AModule); } -Procedure PosixPlatform::GetProcAddress(Module AModule, std::string MethodName) { +Procedure PosixPlatform::GetProcAddress(Module AModule, + std::string MethodName) { return dlsym(AModule, PlatformString(MethodName)); } -std::vector PosixPlatform::GetLibraryImports(const TString FileName) { +std::vector PosixPlatform::GetLibraryImports( + const TString FileName) { std::vector result; return result; } -std::vector PosixPlatform::FilterOutRuntimeDependenciesForPlatform(std::vector Imports) { +std::vector PosixPlatform::FilterOutRuntimeDependenciesForPlatform( + std::vector Imports) { std::vector result; return result; } @@ -170,9 +170,6 @@ return new PosixProcess(); } -//-------------------------------------------------------------------------------------------------- - - PosixProcess::PosixProcess() : Process() { FChildPID = 0; FRunning = false; @@ -207,19 +204,18 @@ if (FOutputHandle != 0 && IsRunning() == true) { char buffer[4096]; - //select(p[0] + 1, &rfds, NULL, NULL, NULL); ssize_t count = read(FOutputHandle, buffer, sizeof(buffer)); if (count == -1) { if (errno == EINTR) { - //continue; + // continue; } else { perror("read"); exit(1); } } else if (count == 0) { - //break; + // break; } else { if (buffer[count] == EOF) { buffer[count] = '\0'; @@ -254,16 +250,16 @@ if (status == 0) { result = true; - } - else { + } else { #ifdef DEBUG - if (errno == EINVAL) + if (errno == EINVAL) { printf("Kill error: The value of the sig argument is an invalid or unsupported signal number."); - else if (errno == EPERM) + } else if (errno == EPERM) { printf("Kill error: The process does not have permission to send the signal to any receiving process."); - else if (errno == ESRCH) + } else if (errno == ESRCH) { printf("Kill error: No process or process group can be found corresponding to that specified by pid."); -#endif //DEBUG + } +#endif // DEBUG if (IsRunning() == true) { status = kill(FChildPID, SIGKILL); @@ -280,7 +276,8 @@ #define PIPE_READ 0 #define PIPE_WRITE 1 -bool PosixProcess::Execute(const TString Application, const std::vector Arguments, bool AWait) { +bool PosixProcess::Execute(const TString Application, + const std::vector Arguments, bool AWait) { bool result = false; if (FRunning == false) { @@ -289,8 +286,6 @@ int handles[2]; if (pipe(handles) == -1) { - //perror("pipe"); - //exit(1); return false; } @@ -305,35 +300,33 @@ sigaction(SIGQUIT, &sa, &savequit); sigaddset(&sa.sa_mask, SIGCHLD); sigprocmask(SIG_BLOCK, &sa.sa_mask, &saveblock); -#endif //MAC +#endif // MAC FChildPID = fork(); - // PID returned by vfork is 0 for the child process and the PID of the child - // process for the parent. + // PID returned by vfork is 0 for the child process and the + // PID of the child process for the parent. if (FChildPID == -1) { // Error - TString message = PlatformString::Format(_T("Error: Unable to create process %s"), Application.data()); + TString message = PlatformString::Format( + _T("Error: Unable to create process %s"), + Application.data()); throw Exception(message); } else if (FChildPID == 0) { Cleanup(); TString command = Application; - for (std::vector::const_iterator iterator = Arguments.begin(); iterator != Arguments.end(); iterator++) { + for (std::vector::const_iterator iterator = + Arguments.begin(); iterator != Arguments.end(); + iterator++) { command += TString(_T(" ")) + *iterator; } #ifdef DEBUG printf("%s\n", command.data()); -#endif //DEBUG -// dup2(FOutputHandle, STDOUT_FILENO); -// dup2(FInputHandle, STDIN_FILENO); -// close(FOutputHandle); -// close(FInputHandle); +#endif // DEBUG dup2(handles[PIPE_READ], STDIN_FILENO); dup2(handles[PIPE_WRITE], STDOUT_FILENO); -// setvbuf(stdout,NULL,_IONBF,0); -// setvbuf(stdin,NULL,_IONBF,0); close(handles[PIPE_READ]); close(handles[PIPE_WRITE]); @@ -342,13 +335,6 @@ _exit(127); } else { -// close(handles[PIPE_READ]); -// close(handles[PIPE_WRITE]); - -// close(output[1]); -// int nbytes = read(output[0], foo, sizeof(foo)); -// printf("Output: (%.*s)\n", nbytes, foo); -// wait(NULL); FOutputHandle = handles[PIPE_READ]; FInputHandle = handles[PIPE_WRITE]; @@ -397,11 +383,11 @@ #ifdef WIFCONTINUED // Not all implementations support this } else if (WIFCONTINUED(status)) { printf("child continued\n"); -#endif //WIFCONTINUED +#endif // WIFCONTINUED } else { // Non-standard case -- may never happen printf("Unexpected status (0x%x)\n", status); } -#endif //DEBUG +#endif // DEBUG if (wpid != -1) { result = true; @@ -425,4 +411,4 @@ return Process::GetOutput(); } -#endif //POSIX +#endif // POSIX diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PosixPlatform.h --- a/src/jdk.packager/share/native/library/common/PosixPlatform.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PosixPlatform.h Wed Oct 17 13:50:11 2018 -0400 @@ -44,8 +44,8 @@ virtual ~PosixPlatform(void); public: - virtual MessageResponse ShowResponseMessage(TString title, TString description); - //virtual MessageResponse ShowResponseMessageB(TString description); + virtual MessageResponse ShowResponseMessage(TString title, + TString description); virtual void SetCurrentDirectory(TString Value); @@ -54,7 +54,8 @@ virtual void FreeLibrary(Module AModule); virtual Procedure GetProcAddress(Module AModule, std::string MethodName); virtual std::vector GetLibraryImports(const TString FileName); - virtual std::vector FilterOutRuntimeDependenciesForPlatform(std::vector Imports); + virtual std::vector FilterOutRuntimeDependenciesForPlatform( + std::vector Imports); virtual Process* CreateProcess(); virtual TString GetTempDirectory(); @@ -74,7 +75,6 @@ void Cleanup(); bool ReadOutput(); - //static void ProcessOutput(Process *Instance, std::vector Output); public: PosixProcess(); @@ -82,13 +82,13 @@ virtual bool IsRunning(); virtual bool Terminate(); - virtual bool Execute(const TString Application, const std::vector Arguments, - bool AWait = false); + virtual bool Execute(const TString Application, + const std::vector Arguments, bool AWait = false); virtual bool Wait(); virtual TProcessID GetProcessID(); virtual void SetInput(TString Value); virtual std::list GetOutput(); }; -#endif //POSIXPLATFORM_H -#endif //POSX +#endif // POSIXPLATFORM_H +#endif // POSX diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PropertyFile.cpp --- a/src/jdk.packager/share/native/library/common/PropertyFile.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PropertyFile.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -46,10 +46,6 @@ FData.Append(Value); } -//PropertyFile::PropertyFile(std::map Value) : PropertyContainer() { -// FData.Append(Value); -//} - PropertyFile::PropertyFile(const PropertyFile &Value) { FData = Value.FData; FReadOnly = Value.FReadOnly; @@ -76,12 +72,6 @@ FReadOnly = Value; } -//void PropertyFile::Assign(std::map Value) { -// FData.Clear(); -// FData.Assign(Value); -// SetModified(true); -//} - bool PropertyFile::LoadFromFile(const TString FileName) { bool result = false; Platform& platform = Platform::GetInstance(); @@ -89,7 +79,8 @@ std::list contents = platform.LoadFromFile(FileName); if (contents.empty() == false) { - for (std::list::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) { + for (std::list::const_iterator iterator = contents.begin(); + iterator != contents.end(); iterator++) { TString line = *iterator; TString name; TString value; @@ -172,10 +163,6 @@ return FData.Count(); } -//std::vector PropertyFile::GetKeys() { -// return FData.GetKeys(); -//} - OrderedMap PropertyFile::GetData() { return FData; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/PropertyFile.h --- a/src/jdk.packager/share/native/library/common/PropertyFile.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/PropertyFile.h Wed Oct 17 13:50:11 2018 -0400 @@ -62,7 +62,7 @@ // IPropertyContainer virtual bool GetValue(const TString Key, TString& Value); virtual size_t GetCount(); - //virtual std::vector GetKeys(); + // virtual std::vector GetKeys(); }; -#endif //PROPERTYFILE_H +#endif // PROPERTYFILE_H diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/WindowsPlatform.cpp --- a/src/jdk.packager/share/native/library/common/WindowsPlatform.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/WindowsPlatform.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -38,9 +38,9 @@ #include #include -#define WINDOWS_PACKAGER_TMP_DIR L"\\AppData\\LocalLow\\Sun\\Java\\Packager\\tmp" +#define WINDOWS_PACKAGER_TMP_DIR \ + L"\\AppData\\LocalLow\\Sun\\Java\\Packager\\tmp" -//-------------------------------------------------------------------------------------------------- class Registry { private: @@ -68,7 +68,8 @@ bool result = false; Close(); - if (RegOpenKeyEx(FKey, SubKey.data(), 0, KEY_READ, &FOpenKey) == ERROR_SUCCESS) { + if (RegOpenKeyEx(FKey, SubKey.data(), 0, KEY_READ, &FOpenKey) == + ERROR_SUCCESS) { result = true; } @@ -80,7 +81,7 @@ DWORD count; if (RegQueryInfoKey(FOpenKey, NULL, NULL, NULL, NULL, NULL, NULL, - &count, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { + &count, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { DWORD length = 255; DynamicBuffer buffer(length); @@ -114,10 +115,12 @@ DynamicBuffer buffer(0); length = 0; - dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, NULL, &length); + dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, NULL, + &length); if (dwRet == ERROR_MORE_DATA || dwRet == 0) { buffer.Resize(length + 1); - dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, (LPBYTE)buffer.GetData(), &length); + dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, + (LPBYTE)buffer.GetData(), &length); result = buffer.GetData(); } @@ -125,8 +128,6 @@ } }; -//-------------------------------------------------------------------------------------------------- - WindowsPlatform::WindowsPlatform(void) : Platform(), GenericPlatform() { FMainThread = ::GetCurrentThreadId(); } @@ -134,12 +135,14 @@ WindowsPlatform::~WindowsPlatform(void) { } -TCHAR* WindowsPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) { +TCHAR* WindowsPlatform::ConvertStringToFileSystemString(TCHAR* Source, + bool &release) { // Not Implemented. return NULL; } -TCHAR* WindowsPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) { +TCHAR* WindowsPlatform::ConvertFileSystemStringToString(TCHAR* Source, + bool &release) { // Not Implemented. return NULL; } @@ -165,7 +168,9 @@ } void WindowsPlatform::ShowMessage(TString title, TString description) { - MessageBox(NULL, description.data(), !title.empty() ? title.data() : description.data(), MB_ICONERROR | MB_OK); + MessageBox(NULL, description.data(), + !title.empty() ? title.data() : description.data(), + MB_ICONERROR | MB_OK); } void WindowsPlatform::ShowMessage(TString description) { @@ -174,28 +179,24 @@ MessageBox(NULL, description.data(), appname.data(), MB_ICONERROR | MB_OK); } -MessageResponse WindowsPlatform::ShowResponseMessage(TString title, TString description) { +MessageResponse WindowsPlatform::ShowResponseMessage(TString title, + TString description) { MessageResponse result = mrCancel; - if (::MessageBox(NULL, description.data(), title.data(), MB_OKCANCEL) == IDOK) { + if (::MessageBox(NULL, description.data(), title.data(), MB_OKCANCEL) == + IDOK) { result = mrOK; } return result; } -//MessageResponse WindowsPlatform::ShowResponseMessage(TString description) { -// TString appname = GetModuleFileName(); -// appname = FilePath::ExtractFileName(appname); -// return ShowResponseMessage(appname, description); -//} - TString WindowsPlatform::GetBundledJVMLibraryFileName(TString RuntimePath) { - TString result = FilePath::IncludeTrailingSeparater(RuntimePath) + + TString result = FilePath::IncludeTrailingSeparator(RuntimePath) + _T("jre\\bin\\jli.dll"); if (FilePath::FileExists(result) == false) { - result = FilePath::IncludeTrailingSeparater(RuntimePath) + + result = FilePath::IncludeTrailingSeparator(RuntimePath) + _T("bin\\jli.dll"); } @@ -206,7 +207,8 @@ IniFile *result = new IniFile(); if (result->LoadFromFile(FileName) == false) { - // New property file format was not found, attempt to load old property file format. + // New property file format was not found, + // attempt to load old property file format. Helpers::LoadOldConfigFile(FileName, result); } @@ -216,11 +218,13 @@ TString WindowsPlatform::GetModuleFileName() { TString result; DynamicBuffer buffer(MAX_PATH); - ::GetModuleFileName(NULL, buffer.GetData(), static_cast(buffer.GetSize())); + ::GetModuleFileName(NULL, buffer.GetData(), + static_cast(buffer.GetSize())); while (ERROR_INSUFFICIENT_BUFFER == GetLastError()) { buffer.Resize(buffer.GetSize() * 2); - ::GetModuleFileName(NULL, buffer.GetData(), static_cast(buffer.GetSize())); + ::GetModuleFileName(NULL, buffer.GetData(), + static_cast(buffer.GetSize())); } result = buffer.GetData(); @@ -235,7 +239,8 @@ ::FreeLibrary((HMODULE)AModule); } -Procedure WindowsPlatform::GetProcAddress(Module AModule, std::string MethodName) { +Procedure WindowsPlatform::GetProcAddress(Module AModule, + std::string MethodName) { return ::GetProcAddress((HMODULE)AModule, MethodName.c_str()); } @@ -297,10 +302,11 @@ return false; } -SingleInstance::SingleInstance(TString& name_): BUF_SIZE(256), _name(name_), _hMapFile(NULL), _pBuf(NULL) { +SingleInstance::SingleInstance(TString& name_): BUF_SIZE(256), _name(name_), + _hMapFile(NULL), _pBuf(NULL) { _mutex = CreateMutex(NULL, TRUE, name_.data()); _lastError = GetLastError(); - _sharedMemoryName = _T("Local\\javapackager-") + _name; + _sharedMemoryName = _T("Local\\jpackager-") + _name; } SingleInstance::~SingleInstance() { @@ -386,17 +392,20 @@ return result; } -std::vector WindowsPlatform::GetLibraryImports(const TString FileName) { +std::vector WindowsPlatform::GetLibraryImports( + const TString FileName) { std::vector result; WindowsLibrary library(FileName); result = library.GetImports(); return result; } -std::vector FilterList(std::vector &Items, std::wregex Pattern) { +std::vector FilterList(std::vector &Items, + std::wregex Pattern) { std::vector result; - for (std::vector::iterator it = Items.begin(); it != Items.end(); ++it) { + for (std::vector::iterator it = Items.begin(); + it != Items.end(); ++it) { TString item = *it; std::wsmatch match; @@ -407,24 +416,28 @@ return result; } -std::vector WindowsPlatform::FilterOutRuntimeDependenciesForPlatform(std::vector Imports) { - std::vector result; - +std::vector WindowsPlatform::FilterOutRuntimeDependenciesForPlatform( + std::vector Imports) { + std::vector result; Package& package = Package::GetInstance(); Macros& macros = Macros::GetInstance(); TString runtimeDir = macros.ExpandMacros(package.GetJVMRuntimeDirectory()); - std::vector filelist = FilterList(Imports, std::wregex(_T("MSVCR.*.DLL"), std::regex_constants::icase)); + std::vector filelist = FilterList(Imports, + std::wregex(_T("MSVCR.*.DLL"), std::regex_constants::icase)); - for (std::vector::iterator it = filelist.begin(); it != filelist.end(); ++it) { + for (std::vector::iterator it = filelist.begin(); + it != filelist.end(); ++it) { TString filename = *it; - TString msvcr100FileName = FilePath::IncludeTrailingSeparater(runtimeDir) + _T("jre\\bin\\") + filename; + TString msvcr100FileName = FilePath::IncludeTrailingSeparator( + runtimeDir) + _T("jre\\bin\\") + filename; if (FilePath::FileExists(msvcr100FileName) == true) { result.push_back(msvcr100FileName); break; } else { - msvcr100FileName = FilePath::IncludeTrailingSeparater(runtimeDir) + _T("bin\\") + filename; + msvcr100FileName = FilePath::IncludeTrailingSeparator(runtimeDir) + + _T("bin\\") + filename; if (FilePath::FileExists(msvcr100FileName) == true) { result.push_back(msvcr100FileName); @@ -457,16 +470,18 @@ } #endif //DEBUG -//-------------------------------------------------------------------------------------------------- -WindowsJavaUserPreferences::WindowsJavaUserPreferences(void) : JavaUserPreferences() { +WindowsJavaUserPreferences::WindowsJavaUserPreferences(void) : + JavaUserPreferences() { } WindowsJavaUserPreferences::~WindowsJavaUserPreferences(void) { } -// Java Preferences API encodes it's strings, so we need to match what Java does to work with Java. -// CAVEAT: Java also does unicode encoding which this doesn't do yet. Should be sufficient for jvm args. +// Java Preferences API encodes it's strings, so we need to match what +// Java does to work with Java. +// CAVEAT: Java also does unicode encoding which this doesn't do yet. +// Should be sufficient for jvm args. // See WindowsPreferences.java toWindowsName() TString ConvertStringToJavaEcodedString(TString Value) { TString result; @@ -499,8 +514,10 @@ return result; } -// Java Preferences API encodes it's strings, so we need to match what Java does to work with Java. -// CAVEAT: Java also does unicode encoding which this doesn't do yet. Should be sufficient for jvm args. +// Java Preferences API encodes it's strings, +// so we need to match what Java does to work with Java. +// CAVEAT: Java also does unicode encoding which this doesn't do yet. +// Should be sufficient for jvm args. // See WindowsPreferences.java toJavaName() TString ConvertJavaEcodedStringToString(TString Value) { TString result; @@ -538,14 +555,16 @@ bool result = false; TString lappid = Helpers::ConvertIdToFilePath(Appid); lappid = ConvertStringToJavaEcodedString(Appid); - TString registryKey = TString(_T("SOFTWARE\\JavaSoft\\Prefs\\")) + lappid + TString(_T("\\/J/V/M/User/Options")); + TString registryKey = TString(_T("SOFTWARE\\JavaSoft\\Prefs\\")) + + lappid + TString(_T("\\/J/V/M/User/Options")); Registry registry(HKEY_CURRENT_USER); if (registry.Open(registryKey) == true) { std::list keys = registry.GetKeys(); OrderedMap mapOfKeysAndValues; - for (std::list::const_iterator iterator = keys.begin(); iterator != keys.end(); iterator++) { + for (std::list::const_iterator iterator = keys.begin(); + iterator != keys.end(); iterator++) { TString key = *iterator; TString value = registry.ReadString(key); key = ConvertJavaEcodedStringToString(key); @@ -563,11 +582,9 @@ return result; } -//-------------------------------------------------------------------------------------------------- - FileHandle::FileHandle(std::wstring FileName) { - FHandle = ::CreateFile(FileName.data(), GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); + FHandle = ::CreateFile(FileName.data(), GENERIC_READ, FILE_SHARE_READ, + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); } FileHandle::~FileHandle() { @@ -636,9 +653,10 @@ FileData fileData(mapping.GetHandle()); if (fileData.IsValid() == true) { - PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)fileData.GetBaseAddress(); - PIMAGE_FILE_HEADER pImgFileHdr = (PIMAGE_FILE_HEADER)fileData.GetBaseAddress(); - + PIMAGE_DOS_HEADER dosHeader = + (PIMAGE_DOS_HEADER)fileData.GetBaseAddress(); + PIMAGE_FILE_HEADER pImgFileHdr = + (PIMAGE_FILE_HEADER)fileData.GetBaseAddress(); if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) { result = DumpPEFile(dosHeader); } @@ -656,7 +674,8 @@ PIMAGE_SECTION_HEADER result = 0; PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(pNTHeader); - for (unsigned index = 0; index < pNTHeader->FileHeader.NumberOfSections; index++, section++) { + for (unsigned index = 0; index < pNTHeader->FileHeader.NumberOfSections; + index++, section++) { // Is the RVA is within this section? if ((rva >= section->VirtualAddress) && (rva < (section->VirtualAddress + section->Misc.VirtualSize))) { @@ -667,12 +686,15 @@ return result; } -LPVOID WindowsLibrary::GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, DWORD imageBase) { +LPVOID WindowsLibrary::GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, + DWORD imageBase) { LPVOID result = 0; - PIMAGE_SECTION_HEADER pSectionHdr = GetEnclosingSectionHeader(rva, pNTHeader); + PIMAGE_SECTION_HEADER pSectionHdr = GetEnclosingSectionHeader(rva, + pNTHeader); if (pSectionHdr != NULL) { - INT delta = (INT)(pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData); + INT delta = (INT)( + pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData); DWORD_PTR dwp = (DWORD_PTR) (imageBase + rva - delta); result = reinterpret_cast(dwp); // VS2017 - FIXME } @@ -680,29 +702,38 @@ return result; } -std::vector WindowsLibrary::GetImportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader) { +std::vector WindowsLibrary::GetImportsSection(DWORD base, + PIMAGE_NT_HEADERS pNTHeader) { std::vector result; - // Look up where the imports section is located. Normally in the .idata section, + // Look up where the imports section is located. Normally in + // the .idata section, // but not necessarily so. Therefore, grab the RVA from the data dir. - DWORD importsStartRVA = pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; + DWORD importsStartRVA = pNTHeader->OptionalHeader.DataDirectory[ + IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; if (importsStartRVA != NULL) { // Get the IMAGE_SECTION_HEADER that contains the imports. This is // usually the .idata section, but doesn't have to be. - PIMAGE_SECTION_HEADER pSection = GetEnclosingSectionHeader(importsStartRVA, pNTHeader); + PIMAGE_SECTION_HEADER pSection = + GetEnclosingSectionHeader(importsStartRVA, pNTHeader); if (pSection != NULL) { - PIMAGE_IMPORT_DESCRIPTOR importDesc = (PIMAGE_IMPORT_DESCRIPTOR)GetPtrFromRVA(importsStartRVA, pNTHeader,base); + PIMAGE_IMPORT_DESCRIPTOR importDesc = + (PIMAGE_IMPORT_DESCRIPTOR)GetPtrFromRVA( + importsStartRVA, pNTHeader,base); if (importDesc != NULL) { while (true) { // See if we've reached an empty IMAGE_IMPORT_DESCRIPTOR - if ((importDesc->TimeDateStamp == 0) && (importDesc->Name == 0)) + if ((importDesc->TimeDateStamp == 0) && + (importDesc->Name == 0)) { break; + } - std::string filename = (char*)GetPtrFromRVA(importDesc->Name, pNTHeader, base); + std::string filename = (char*)GetPtrFromRVA( + importDesc->Name, pNTHeader, base); result.push_back(PlatformString(filename)); importDesc++; // advance to next IMAGE_IMPORT_DESCRIPTOR } @@ -724,7 +755,8 @@ // Verify that the e_lfanew field gave us a reasonable // pointer and the PE signature. - // TODO: To really fix JDK-8131321 this condition needs to be changed. There is a matching change + // TODO: To really fix JDK-8131321 this condition needs to be changed. + // There is a matching change // in JavaVirtualMachine.cpp that also needs to be changed. if (pNTHeader->Signature == IMAGE_NT_SIGNATURE) { DWORD base = (DWORD)(dwDosHeaders); @@ -734,8 +766,6 @@ return result; } -//-------------------------------------------------------------------------------------------------- - #include WindowsJob::WindowsJob() { @@ -754,17 +784,21 @@ if (FHandle == NULL) { - ::MessageBox( 0, _T("Could not create job object"), _T("TEST"), MB_OK); + ::MessageBox( 0, _T("Could not create job object"), + _T("TEST"), MB_OK); } else { JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli = { 0 }; - // Configure all child processes associated with the job to terminate when the - jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; - if (0 == SetInformationJobObject(FHandle, JobObjectExtendedLimitInformation, &jeli, sizeof(jeli))) - { - ::MessageBox( 0, _T("Could not SetInformationJobObject"), _T("TEST"), MB_OK); + // Configure all child processes associated with + // the job to terminate when the + jeli.BasicLimitInformation.LimitFlags = + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; + if (0 == SetInformationJobObject(FHandle, + JobObjectExtendedLimitInformation, &jeli, sizeof(jeli))) { + ::MessageBox( 0, _T("Could not SetInformationJobObject"), + _T("TEST"), MB_OK); } } } @@ -820,7 +854,8 @@ return result; } -bool WindowsProcess::Execute(const TString Application, const std::vector Arguments, bool AWait) { +bool WindowsProcess::Execute(const TString Application, + const std::vector Arguments, bool AWait) { bool result = false; if (FRunning == false) { @@ -833,19 +868,24 @@ TString command = Application; - for (std::vector::const_iterator iterator = Arguments.begin(); iterator != Arguments.end(); iterator++) { + for (std::vector::const_iterator iterator = Arguments.begin(); + iterator != Arguments.end(); iterator++) { command += TString(_T(" ")) + *iterator; } if (::CreateProcess(Application.data(), (wchar_t*)command.data(), NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &FProcessInfo) == FALSE) { - TString message = PlatformString::Format(_T("Error: Unable to create process %s"), Application.data()); + TString message = PlatformString::Format( + _T("Error: Unable to create process %s"), + Application.data()); throw Exception(message); } else { if (FJob.GetHandle() != NULL) { - if (::AssignProcessToJobObject(FJob.GetHandle(), FProcessInfo.hProcess) == 0) { - // Failed to assign process to job. It doesn't prevent anything from continuing so continue. + if (::AssignProcessToJobObject(FJob.GetHandle(), + FProcessInfo.hProcess) == 0) { + // Failed to assign process to job. It doesn't prevent + // anything from continuing so continue. } } @@ -874,12 +914,12 @@ bool WindowsProcess::ReadOutput() { bool result = false; - //TODO implement + // TODO implement return result; } void WindowsProcess::SetInput(TString Value) { - //TODO implement + // TODO implement } std::list WindowsProcess::GetOutput() { @@ -887,4 +927,4 @@ return Process::GetOutput(); } -#endif //WINDOWS +#endif // WINDOWS diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/WindowsPlatform.h --- a/src/jdk.packager/share/native/library/common/WindowsPlatform.h Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/WindowsPlatform.h Wed Oct 17 13:50:11 2018 -0400 @@ -74,7 +74,8 @@ }; #pragma warning( push ) -#pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member' +// C4250 - 'class1' : inherits 'class2::member' +#pragma warning( disable : 4250 ) class WindowsPlatform : virtual public Platform, GenericPlatform { private: DWORD FMainThread; @@ -83,12 +84,15 @@ WindowsPlatform(void); virtual ~WindowsPlatform(void); - virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release); - virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release); + virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, + bool &release); + virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, + bool &release); virtual void ShowMessage(TString title, TString description); virtual void ShowMessage(TString description); - virtual MessageResponse ShowResponseMessage(TString title, TString description); + virtual MessageResponse ShowResponseMessage(TString title, + TString description); //virtual MessageResponse ShowResponseMessage(TString description); virtual void SetCurrentDirectory(TString Value); @@ -103,7 +107,8 @@ virtual void FreeLibrary(Module AModule); virtual Procedure GetProcAddress(Module AModule, std::string MethodName); virtual std::vector GetLibraryImports(const TString FileName); - virtual std::vector FilterOutRuntimeDependenciesForPlatform(std::vector Imports); + virtual std::vector FilterOutRuntimeDependenciesForPlatform( + std::vector Imports); virtual Process* CreateProcess(); @@ -176,9 +181,12 @@ // Given an RVA, look up the section header that encloses it and return a // pointer to its IMAGE_SECTION_HEADER - static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, PIMAGE_NT_HEADERS pNTHeader); - static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, DWORD imageBase); - static std::vector GetImportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader); + static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, + PIMAGE_NT_HEADERS pNTHeader); + static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, + DWORD imageBase); + static std::vector GetImportsSection(DWORD base, + PIMAGE_NT_HEADERS pNTHeader); static std::vector DumpPEFile(PIMAGE_DOS_HEADER dosHeader); public: @@ -216,8 +224,8 @@ virtual bool IsRunning(); virtual bool Terminate(); - virtual bool Execute(const TString Application, const std::vector Arguments, - bool AWait = false); + virtual bool Execute(const TString Application, + const std::vector Arguments, bool AWait = false); virtual bool Wait(); virtual TProcessID GetProcessID(); virtual void SetInput(TString Value); @@ -227,6 +235,6 @@ -#endif //WINDOWSPLATFORM_H +#endif // WINDOWSPLATFORM_H #endif // WINDOWS diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/share/native/library/common/main.cpp --- a/src/jdk.packager/share/native/library/common/main.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/share/native/library/common/main.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -44,13 +44,16 @@ #include /* -This is the launcher program for application packaging on Windows, Mac and Linux. +This is the launcher program for application packaging on Windows, Mac, + and Linux. Basic approach: - - Launcher executable loads packager.dll/libpackager.dylib/libpackager.so and calls start_launcher below. - - Reads app/package.cfg or Info.plist or app/.cfg for application launch configuration - (package.cfg is property file). - - Load JVM with requested JVM settings (bundled client JVM if availble, server or installed JVM otherwise). + - Launcher executable loads packager.dll/libpackager.dylib/libpackager.so + and calls start_launcher below. + - Reads app/package.cfg or Info.plist or app/.cfg for application + launch configuration (package.cfg is property file). + - Load JVM with requested JVM settings (bundled client JVM if availble, + server or installed JVM otherwise). - Wait for JVM to exit and then exit from Main - To debug application by passing command line argument. - Application folder is added to the library path (so LoadLibrary()) works. @@ -65,7 +68,8 @@ extern "C" { #ifdef WINDOWS - BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { + BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, + LPVOID lpvReserved) { return true; } #endif //WINDOWS @@ -91,11 +95,13 @@ parentProcess = false; } #ifdef DEBUG - // There is a compiler bug on Mac when overloading ShowResponseMessage. + // There is a compiler bug on Mac when overloading + // ShowResponseMessage. else if (argument == _T("-nativedebug")) { if (platform.ShowResponseMessage(_T("Test"), - TString(_T("Would you like to debug?\n\nProcessID: ")) + - PlatformString(platform.GetProcessID()).toString()) == mrOK) { + TString(_T("Would you like to debug?\n\nProcessID: ")) + + PlatformString(platform.GetProcessID()).toString()) + == mrOK) { while (platform.IsNativeDebuggerPresent() == false) { } } @@ -112,8 +118,9 @@ if (package.CheckForSingleInstance()) { // reactivate the first instance if the process Id is valid platform.reactivateAnotherInstance(); - if (package.GetArgs().size() > 0 && platform.GetSingleInstanceProcessId() != 0) { - // if user specified args, try to pass them to the first instance + if (package.GetArgs().size() > 0 && + platform.GetSingleInstanceProcessId() != 0) { + // if user specified args, pass them to the first instance return RunVM(SINGLE_INSTANCE_NOTIFICATION_LAUNCH); } return true; @@ -127,31 +134,32 @@ } case cdsGenCache: { - TString cacheDirectory = package.GetAppCDSCacheDirectory(); - - if (FilePath::DirectoryExists(cacheDirectory) == false) { - FilePath::CreateDirectory(cacheDirectory, true); - } - else { - TString cacheFileName = package.GetAppCDSCacheFileName(); + TString cacheDirectory = package.GetAppCDSCacheDirectory(); - if (FilePath::FileExists(cacheFileName) == true) { - FilePath::DeleteFile(cacheFileName); - } + if (FilePath::DirectoryExists(cacheDirectory) == false) { + FilePath::CreateDirectory(cacheDirectory, true); + } else { + TString cacheFileName = + package.GetAppCDSCacheFileName(); + if (FilePath::FileExists(cacheFileName) == true) { + FilePath::DeleteFile(cacheFileName); } + } - break; - } + break; + } case cdsAuto: { TString cacheFileName = package.GetAppCDSCacheFileName(); - if (parentProcess == true && FilePath::FileExists(cacheFileName) == false) { + if (parentProcess == true && + FilePath::FileExists(cacheFileName) == false) { AutoFreePtr process = platform.CreateProcess(); std::vector args; args.push_back(_T("-Xappcds:generatecache")); args.push_back(_T("-Xapp:child")); - process->Execute(platform.GetModuleFileName(), args, true); + process->Execute( + platform.GetModuleFileName(), args, true); if (FilePath::FileExists(cacheFileName) == false) { // Cache does not exist after trying to generate it, @@ -167,37 +175,38 @@ } // Validation - { - switch (platform.GetAppCDSState()) { - case cdsDisabled: - case cdsGenCache: { - // Do nothing. - break; - } + switch (platform.GetAppCDSState()) { + case cdsDisabled: + case cdsGenCache: { + // Do nothing. + break; + } - case cdsEnabled: - case cdsAuto: { - TString cacheFileName = package.GetAppCDSCacheFileName(); + case cdsEnabled: + case cdsAuto: { + TString cacheFileName = + package.GetAppCDSCacheFileName(); - if (FilePath::FileExists(cacheFileName) == false) { - Messages& messages = Messages::GetInstance(); - TString message = PlatformString::Format(messages.GetMessage(APPCDS_CACHE_FILE_NOT_FOUND), cacheFileName.data()); - throw FileNotFoundException(message); - } - break; - } + if (FilePath::FileExists(cacheFileName) == false) { + Messages& messages = Messages::GetInstance(); + TString message = PlatformString::Format( + messages.GetMessage( + APPCDS_CACHE_FILE_NOT_FOUND), + cacheFileName.data()); + throw FileNotFoundException(message); + } + break; + } - case cdsUninitialized: { - // throw Exception(_T("Internal Error")); // VS2017 - platform.ShowMessage(_T("Internal Error")); - break; - } + case cdsUninitialized: { + platform.ShowMessage(_T("Internal Error")); + break; } } + // Run App result = RunVM(USER_APP_LAUNCH); - } - catch (FileNotFoundException &e) { + } catch (FileNotFoundException &e) { platform.ShowMessage(e.GetMessage()); } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/unix/scripts/jpackager --- a/src/jdk.packager/unix/scripts/jpackager Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/unix/scripts/jpackager Wed Oct 17 13:50:11 2018 -0400 @@ -1,6 +1,6 @@ #!/bin/bash # -# Java Packager tool execution script for Linux and OS X. +# Java Packager tool execution script for Linux and MacOS. # # Default values. @@ -99,5 +99,5 @@ # This is similar to "$@" except we had to strip out some arguments # that we don't want to be passed to the Java Packager. eval exec "$JAVA_CMD" ${DEBUG} ${MEMORY} ${JAVA_ARGS} \ - -m jdk.packager/jdk.packager.Main $args - \ No newline at end of file + -m jdk.packager/jdk.packager.main.Main $args + diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java --- a/src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400 @@ -25,7 +25,6 @@ package jdk.packager.internal.builders.windows; - import jdk.packager.internal.BundlerParamInfo; import jdk.packager.internal.Log; import jdk.packager.internal.RelativeFileSet; @@ -34,6 +33,7 @@ import jdk.packager.internal.resources.windows.WinResources; import jdk.packager.internal.windows.WindowsBundlerParam; import jdk.packager.internal.builders.AbstractAppImageBuilder; +import jdk.packager.internal.windows.WindowsDefender; import java.io.File; import java.io.FileOutputStream; @@ -62,8 +62,6 @@ import jdk.packager.internal.Arguments; import static jdk.packager.internal.StandardBundlerParam.*; -import jdk.packager.internal.windows.WindowsDefender; - public class WindowsAppImageBuilder extends AbstractAppImageBuilder { @@ -501,11 +499,6 @@ } @Override - protected String getCacheLocation(Map params) { - return "$CACHEDIR/"; - } - - @Override public String getPlatformSpecificModulesFile() { return MODULES_FILENAME; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.rebrand-executable.name = Rebrand Launcher param.rebrand-executable.description = Update the launcher with the application icon and update ownership information. @@ -16,4 +42,4 @@ message.config-save-location=Config files are saved to {0}. Use them to customize package. message.potential.windows.defender.issue=Warning: Windows Defender may prevent the Java Packager from functioning. If there is an issue, it can be addressed by either disabling realtime monitoring, or adding an exclusion for the directory "{0}". -resource.executable-properties-template=Template for creating executable properties file. \ No newline at end of file +resource.executable-properties-template=Template for creating executable properties file. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.rebrand-executable.name = \u30E9\u30F3\u30C1\u30E3\u306E\u30EA\u30D6\u30E9\u30F3\u30C9 param.rebrand-executable.description = \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A2\u30A4\u30B3\u30F3\u3092\u542B\u3080\u30E9\u30F3\u30C1\u30E3\u304A\u3088\u3073\u6240\u6709\u8005\u60C5\u5831\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.rebrand-executable.name = \u66F4\u6539\u542F\u52A8\u7A0B\u5E8F\u54C1\u724C param.rebrand-executable.description = \u4F7F\u7528\u5E94\u7528\u7A0B\u5E8F\u56FE\u6807\u66F4\u65B0\u542F\u52A8\u7A0B\u5E8F\u5E76\u66F4\u65B0\u6240\u6709\u6743\u4FE1\u606F\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Windows Application Image bundler.description=A Directory based image of a windows Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Windows\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8 bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BWindows\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30E9\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=Windows \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 Windows \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=EXE Installer bundler.description=Microsoft Windows EXE Installer, via InnoIDE. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + Comments=COMMENTS CompanyName=COMPANY_NAME FileDescription=FILE_DESCRIPTION diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=MSI Installer bundler.description=Microsoft Windows MSI Installer, via WiX. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=MSI\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9 bundler.description=WiX\u3092\u4F7F\u7528\u3057\u305FMicrosoft Windows MSI\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + bundler.name=MSI \u5B89\u88C5\u7A0B\u5E8F bundler.description=Microsoft Windows MSI \u5B89\u88C5\u7A0B\u5E8F, \u901A\u8FC7 WiX\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.menu-group.name=Menu Group param.menu-group.description=The Start Menu group this application should be placed in param.menu-group.default=Unknown @@ -14,8 +40,5 @@ param.registry-name.name=Registry Name param.registry-name.description=The name of the application for registry references. Default is the Application Name with only alphanumerics, dots, and dashes (no whitespace). -param.runtime.name=JRE -param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application. - param.installdir-chooser.name=Install Directory Chooser param.installdir-chooser.description=Adds a dialog to let the user choose a directory where the product will be installed. diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.menu-group.name=\u30E1\u30CB\u30E5\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7 param.menu-group.description=\u3053\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u8D77\u52D5\u30E1\u30CB\u30E5\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7 param.menu-group.default=\u4E0D\u660E @@ -14,8 +40,5 @@ param.registry-name.name=\u30EC\u30B8\u30B9\u30C8\u30EA\u540D param.registry-name.description=\u30EC\u30B8\u30B9\u30C8\u30EA\u53C2\u7167\u7528\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u3001\u82F1\u6570\u5B57\u3001\u30C9\u30C3\u30C8\u304A\u3088\u3073\u30C0\u30C3\u30B7\u30E5(\u7A7A\u767D\u306A\u3057)\u306E\u307F\u3092\u4F7F\u7528\u3057\u305F\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u3067\u3059\u3002 -param.runtime.name=JRE -param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 - param.installdir-chooser.name=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9078\u629E param.installdir-chooser.description=\u30E6\u30FC\u30B6\u30FC\u304C\u88FD\u54C1\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9078\u629E\u3059\u308B\u305F\u3081\u306E\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400 @@ -1,3 +1,29 @@ +# +# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# + param.menu-group.name=\u83DC\u5355\u7EC4 param.menu-group.description=\u5E94\u5C06\u6B64\u5E94\u7528\u7A0B\u5E8F\u653E\u7F6E\u5230\u7684\u5F00\u59CB\u83DC\u5355\u7EC4 param.menu-group.default=\u672A\u77E5 @@ -14,8 +40,5 @@ param.registry-name.name=\u6CE8\u518C\u8868\u540D\u79F0 param.registry-name.description=\u7528\u4E8E\u6CE8\u518C\u8868\u5F15\u7528\u7684\u5E94\u7528\u7A0B\u5E8F\u7684\u540D\u79F0\u3002\u9ED8\u8BA4\u503C\u4E3A\u53EA\u5305\u542B\u5B57\u6BCD\u6570\u5B57, \u70B9\u548C\u77ED\u5212\u7EBF (\u65E0\u7A7A\u683C) \u7684\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0\u3002 -param.runtime.name=JRE -param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002 - param.installdir-chooser.name=\u5B89\u88C5\u76EE\u5F55\u9009\u62E9\u5668 param.installdir-chooser.description=\u6DFB\u52A0\u5BF9\u8BDD\u6846\u4EE5\u5141\u8BB8\u7528\u6237\u9009\u62E9\u5C06\u5728\u5176\u4E2D\u5B89\u88C5\u4EA7\u54C1\u7684\u76EE\u5F55\u3002 diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss Wed Oct 17 13:50:11 2018 -0400 @@ -8,9 +8,6 @@ AppPublisher=APPLICATION_VENDOR AppComments=APPLICATION_COMMENTS AppCopyright=APPLICATION_COPYRIGHT -;AppPublisherURL=http://java.com/ -;AppSupportURL=http://java.com/ -;AppUpdatesURL=http://java.com/ DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME DisableStartupPrompt=Yes DisableDirPage=DISABLE_DIR_PAGE @@ -71,6 +68,5 @@ // Possible future improvements: // if version less or same => just launch app // if upgrade => check if same app is running and wait for it to exit -// Add pack200/unpack200 support? Result := True; end; diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss --- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss Wed Oct 17 13:50:11 2018 -0400 @@ -8,9 +8,6 @@ AppPublisher=APPLICATION_VENDOR AppComments=APPLICATION_COMMENTS AppCopyright=APPLICATION_COPYRIGHT -;AppPublisherURL=http://java.com/ -;AppSupportURL=http://java.com/ -;AppUpdatesURL=http://java.com/ DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME DisableStartupPrompt=Yes DisableDirPage=DISABLE_DIR_PAGE diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java --- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -35,8 +35,9 @@ import jdk.packager.internal.UnsupportedPlatformException; import jdk.packager.internal.builders.windows.WindowsAppImageBuilder; import jdk.packager.internal.resources.windows.WinResources; - import jdk.packager.internal.JLinkBundlerHelper; +import jdk.packager.internal.Arguments; +import jdk.packager.internal.builders.AbstractAppImageBuilder; import java.io.ByteArrayOutputStream; import java.io.File; @@ -47,10 +48,8 @@ import java.util.Collection; import java.util.Map; import java.util.ResourceBundle; -import jdk.packager.internal.Arguments; import static jdk.packager.internal.windows.WindowsBundlerParam.*; -import jdk.packager.internal.builders.AbstractAppImageBuilder; import static jdk.packager.internal.windows.WinMsiBundler.WIN_APP_IMAGE; public class WinAppBundler extends AbstractImageBundler { @@ -159,14 +158,18 @@ } private static String appName; - private synchronized static String getAppName(Map p) { + private synchronized static String getAppName( + Map p) { // If we building from predefined app image, then we should use names // from image and not from CLI. if (usePredefineAppName(p)) { if (appName == null) { - // Use WIN_APP_IMAGE here, since we already copy pre-defined image to WIN_APP_IMAGE - File appImageDir = new File(WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app"); - File [] files = appImageDir.listFiles((File dir, String name) -> name.endsWith(".cfg")); + // Use WIN_APP_IMAGE here, since we already copy pre-defined + // image to WIN_APP_IMAGE + File appImageDir = new File( + WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app"); + File [] files = appImageDir.listFiles( + (File dir, String name) -> name.endsWith(".cfg")); if (files == null || files.length != 1) { throw new RuntimeException(MessageFormat.format( I18N.getString("error.cannot-find-cfg"), @@ -361,7 +364,6 @@ MAIN_CLASS, MAIN_JAR, PREFERENCES_ID, - PRELOADER_CLASS, VERSION, VERBOSE ); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java --- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -22,6 +22,7 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ + package jdk.packager.internal.windows; import jdk.packager.internal.*; @@ -146,7 +147,9 @@ "win.exe.iscc.exe", String.class, params -> { - for (String dirString : (System.getenv("PATH") + ";C:\\Program Files (x86)\\Inno Setup 5;C:\\Program Files\\Inno Setup 5").split(";")) { + for (String dirString : (System.getenv("PATH") + + ";C:\\Program Files (x86)\\Inno Setup 5;" + + "C:\\Program Files\\Inno Setup 5").split(";")) { File f = new File(dirString.replace("\"", ""), TOOL_INNO_SETUP_COMPILER); if (f.isFile()) { @@ -197,11 +200,7 @@ LICENSE_FILE, MENU_GROUP, MENU_HINT, - // RUN_AT_STARTUP, SHORTCUT_HINT, - // SERVICE_HINT, - // START_ON_INSTALL, - // STOP_ON_UNINSTALL, EXE_SYSTEM_WIDE, TITLE, VENDOR, @@ -303,28 +302,6 @@ getString("error.copyright-is-too-long.advice")); } - // validate license file, if used, exists in the proper place - if (p.containsKey(LICENSE_FILE.getID())) { - List appResourcesList = - APP_RESOURCES_LIST.fetchFrom(p); - for (String license : LICENSE_FILE.fetchFrom(p)) { - boolean found = false; - for (RelativeFileSet appResources : appResourcesList) { - found = found || appResources.contains(license); - } - if (!found) { - throw new ConfigException( - getString("error.license-missing"), - MessageFormat.format(getString( - "error.license-missing.advice"), license)); - } - } - } -// -// if (SERVICE_HINT.fetchFrom(p)) { -// SERVICE_BUNDLER.fetchFrom(p).validate(p); -// } - double innoVersion = findToolVersion( TOOL_INNO_SETUP_COMPILER_EXECUTABLE.fetchFrom(p)); @@ -418,7 +395,8 @@ for (String s : licenseFiles) { if (rfs.contains(s)) { File lfile = new File(rfs.getBaseDirectory(), s); - File destFile = new File(appDir, lfile.getName()); + File destFile = + new File(appDir.getParentFile(), lfile.getName()); IOUtils.copyFile(lfile, destFile); ensureByMutationFileIsRTF(destFile); break outerLoop; @@ -448,15 +426,6 @@ } } -// -// if (SERVICE_HINT.fetchFrom(p)) { -// // copies the service launcher to the app root folder -// appDir = SERVICE_BUNDLER.fetchFrom(p).doBundle( -// p, appOutputDir, true); -// if (appDir == null) { -// return false; -// } -// } return true; } @@ -654,39 +623,14 @@ } else { data.put("ARCHITECTURE_BIT_MODE", ""); } -// -// if (SERVICE_HINT.fetchFrom(p)) { -// data.put("RUN_FILENAME", -// innosetupEscape(WinServiceBundler.getAppSvcName(p))); -// } else { - validateValueAndPut(data, "RUN_FILENAME", APP_NAME, p); -// } + validateValueAndPut(data, "RUN_FILENAME", APP_NAME, p); validateValueAndPut(data, "APPLICATION_DESCRIPTION", DESCRIPTION, p); -// data.put("APPLICATION_SERVICE", -// SERVICE_HINT.fetchFrom(p) ? "returnTrue" : "returnFalse"); data.put("APPLICATION_SERVICE", "returnFalse"); - -// data.put("APPLICATION_NOT_SERVICE", -// SERVICE_HINT.fetchFrom(p) ? "returnFalse" : "returnTrue"); data.put("APPLICATION_NOT_SERVICE", "returnFalse"); - -// data.put("APPLICATION_APP_CDS_INSTALL", -// (UNLOCK_COMMERCIAL_FEATURES.fetchFrom(p) && -// ENABLE_APP_CDS.fetchFrom(p) && -// ("install".equals(APP_CDS_CACHE_MODE.fetchFrom(p)) || -// "auto+install".equals(APP_CDS_CACHE_MODE.fetchFrom(p)))) -// ? "returnTrue" : "returnFalse"); data.put("APPLICATION_APP_CDS_INSTALL", "returnFalse"); - -// data.put("START_ON_INSTALL", -// START_ON_INSTALL.fetchFrom(p) ? "-startOnInstall" : ""); -// data.put("STOP_ON_UNINSTALL", -// STOP_ON_UNINSTALL.fetchFrom(p) ? "-stopOnUninstall" : ""); -// data.put("RUN_AT_STARTUP", -// RUN_AT_STARTUP.fetchFrom(p) ? "-runAtStartup" : ""); data.put("START_ON_INSTALL", ""); data.put("STOP_ON_UNINSTALL", ""); data.put("RUN_AT_STARTUP", ""); @@ -749,13 +693,16 @@ // Flags: uninsdeletevalue" registryEntries.append("Root: HKCR; Subkey: \".") .append(ext) - .append("\"; ValueType: string; ValueName: \"\"; ValueData: \"") + .append("\"; ValueType: string;" + + " ValueName: \"\"; ValueData: \"") .append(entryName) .append("\"; Flags: uninsdeletevalue\r\n"); } else { - registryEntries.append("Root: HKCU; Subkey: \"Software\\Classes\\.") + registryEntries.append( + "Root: HKCU; Subkey: \"Software\\Classes\\.") .append(ext) - .append("\"; ValueType: string; ValueName: \"\"; ValueData: \"") + .append("\"; ValueType: string;" + + " ValueName: \"\"; ValueData: \"") .append(entryName) .append("\"; Flags: uninsdeletevalue\r\n"); } @@ -764,11 +711,13 @@ if (extensions != null && !extensions.isEmpty()) { String ext = extensions.get(0); - List mimeTypes = FA_CONTENT_TYPE.fetchFrom(fileAssociation); + List mimeTypes = + FA_CONTENT_TYPE.fetchFrom(fileAssociation); for (String mime : mimeTypes) { if (isSystemWide) { // "Root: HKCR; - // Subkey: HKCR\\Mime\\Database\\Content Type\\application/chaos; + // Subkey: HKCR\\Mime\\Database\\ + // Content Type\\application/chaos; // ValueType: string; // ValueName: Extension; // ValueData: .chaos; @@ -895,7 +844,7 @@ throws IOException { prepareMainProjectFile(p); - //prepare installer icon + // prepare installer icon File iconTarget = getConfig_SmallInnoSetupIcon(p); fetchResource(WinAppBundler.WIN_BUNDLER_PREFIX + iconTarget.getName(), getString("resource.setup-icon"), @@ -934,9 +883,10 @@ outdir.mkdirs(); - //run candle + // run Inno Setup ProcessBuilder pb = new ProcessBuilder( TOOL_INNO_SETUP_COMPILER_EXECUTABLE.fetchFrom(p), + "/q", // turn off inno setup output "/o"+outdir.getAbsolutePath(), getConfig_ExeProjectFile(p).getAbsolutePath()); pb = pb.directory(EXE_IMAGE_DIR.fetchFrom(p)); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java --- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java Wed Oct 17 13:50:11 2018 -0400 @@ -252,13 +252,8 @@ MENU_GROUP, MENU_HINT, PRODUCT_VERSION, - // RUN_AT_STARTUP, SHORTCUT_HINT, - // SERVICE_HINT, - // START_ON_INSTALL, - // STOP_ON_UNINSTALL, MSI_SYSTEM_WIDE, - //UPGRADE_UUID, VENDOR, LICENSE_FILE, INSTALLDIR_CHOOSER @@ -482,7 +477,8 @@ // we either have an application image or need to build one if (appImage != null) { - appDir = new File(MSI_IMAGE_DIR.fetchFrom(p), APP_NAME.fetchFrom(p)); + appDir = new File( + MSI_IMAGE_DIR.fetchFrom(p), APP_NAME.fetchFrom(p)); // copy everything from appImage dir into appDir/name IOUtils.copyRecursive(appImage.toPath(), appDir.toPath()); } else { @@ -1191,7 +1187,7 @@ commandLine.add("-out"); commandLine.add(msiOut.getAbsolutePath()); - //create .msi + // create .msi pb = new ProcessBuilder(commandLine); pb = pb.directory(WIN_APP_IMAGE.fetchFrom(params)); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java --- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java Wed Oct 17 13:50:11 2018 -0400 @@ -39,7 +39,6 @@ import static jdk.packager.internal.JreUtils.extractJreAsRelativeFileSet; - public class WindowsBundlerParam extends StandardBundlerParam { private static final ResourceBundle I18N = ResourceBundle.getBundle( @@ -162,19 +161,6 @@ (s, p) -> null ); - public static final BundlerParamInfo WIN_RUNTIME = - new StandardBundlerParam<>( - I18N.getString("param.runtime.name"), - I18N.getString("param.runtime.description"), - BundleParams.PARAM_RUNTIME, - RelativeFileSet.class, - params -> extractJreAsRelativeFileSet( - System.getProperty("java.home"), - WIN_JRE_RULES.fetchFrom(params)), - (s, p) -> extractJreAsRelativeFileSet(s, - WIN_JRE_RULES.fetchFrom(p)) - ); - public static final BundlerParamInfo INSTALLDIR_CHOOSER = new StandardBundlerParam<> ( I18N.getString("param.installdir-chooser.name"), diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java --- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java Wed Oct 17 13:50:11 2018 -0400 @@ -47,8 +47,8 @@ */ public static final boolean readDisableRealtimeMonitoring() { boolean result = false; - final String key = - "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows Defender\\Real-Time Protection"; + final String key = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\" + + "Windows Defender\\Real-Time Protection"; final String subkey = "DisableRealtimeMonitoring"; String value = readRegistry(key, subkey); @@ -77,8 +77,8 @@ public static final List readExclusionsPaths() { List result = new ArrayList(); - final String key = - "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows Defender\\Exclusions\\Paths"; + final String key = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\" + + "Windows Defender\\Exclusions\\Paths"; String value = readRegistry(key, ""); if (!value.isEmpty()) { diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/IconSwap.cpp --- a/src/jdk.packager/windows/native/jpackager/IconSwap.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/native/jpackager/IconSwap.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -117,7 +117,8 @@ return result; } - HANDLE icon = CreateFile(iconFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + HANDLE icon = CreateFile(iconFileName, GENERIC_READ, 0, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (icon == INVALID_HANDLE_VALUE) { PrintError(); return result; @@ -131,7 +132,8 @@ ReadFile(icon, &idType, sizeof(WORD), &dwBytesRead, NULL); ReadFile(icon, &idCount, sizeof(WORD), &dwBytesRead, NULL); - LPICONDIR lpid = (LPICONDIR)malloc(sizeof(ICONDIR) + (sizeof(ICONDIRENTRY) * (idCount - 1))); + LPICONDIR lpid = (LPICONDIR)malloc( + sizeof(ICONDIR) + (sizeof(ICONDIRENTRY) * (idCount - 1))); if (lpid == NULL) { CloseHandle(icon); @@ -142,10 +144,12 @@ lpid->idType = idType; lpid->idCount = idCount; - ReadFile(icon, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount, &dwBytesRead, NULL); + ReadFile(icon, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount, + &dwBytesRead, NULL); - LPGRPICONDIR lpgid = (LPGRPICONDIR)malloc(sizeof(GRPICONDIR) + (sizeof(GRPICONDIRENTRY) * (idCount - 1))); + LPGRPICONDIR lpgid = (LPGRPICONDIR)malloc( + sizeof(GRPICONDIR) + (sizeof(GRPICONDIRENTRY) * (idCount - 1))); if (lpid == NULL) { CloseHandle(icon); @@ -183,10 +187,13 @@ for(int i = 0; i < lpid->idCount; i++) { LPBYTE lpBuffer = (LPBYTE)malloc(lpid->idEntries[i].dwBytesInRes); - SetFilePointer(icon, lpid->idEntries[i].dwImageOffset, NULL, FILE_BEGIN); - ReadFile(icon, lpBuffer, lpid->idEntries[i].dwBytesInRes, &dwBytesRead, NULL); - if (!UpdateResource(update, RT_ICON, MAKEINTRESOURCE(lpgid->idEntries[i].nID), - language, &lpBuffer[0], lpid->idEntries[i].dwBytesInRes)) + SetFilePointer(icon, lpid->idEntries[i].dwImageOffset, + NULL, FILE_BEGIN); + ReadFile(icon, lpBuffer, lpid->idEntries[i].dwBytesInRes, + &dwBytesRead, NULL); + if (!UpdateResource(update, RT_ICON, + MAKEINTRESOURCE(lpgid->idEntries[i].nID), + language, &lpBuffer[0], lpid->idEntries[i].dwBytesInRes)) { free(lpBuffer); free(lpid); @@ -201,8 +208,9 @@ free(lpid); CloseHandle(icon); - if (!UpdateResource(update, RT_GROUP_ICON, MAKEINTRESOURCE(1), language, - &lpgid[0], (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount))) + if (!UpdateResource(update, RT_GROUP_ICON, + MAKEINTRESOURCE(1), language, &lpgid[0], + (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount))) { free(lpgid); PrintError(); diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp --- a/src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -75,7 +75,8 @@ std::wifstream stream(m_propFileName.data()); const std::locale empty_locale = std::locale::empty(); - const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8()); + const std::locale utf8_locale = + std::locale(empty_locale, new std::codecvt_utf8()); stream.imbue(utf8_locale); if (stream.is_open() == true) { @@ -145,7 +146,8 @@ // Strings std::vector keys; - for (std::map::const_iterator it = m_props.begin(); it != m_props.end(); ++it) { + for (std::map::const_iterator it = + m_props.begin(); it != m_props.end(); ++it) { keys.push_back(it->first); } @@ -160,12 +162,15 @@ buf->AppendString(name); buf->Align(4); buf->AppendString(value); - buf->ReplaceWORD(stringStart, static_cast(buf->getPos() - stringStart)); + buf->ReplaceWORD(stringStart, + static_cast(buf->getPos() - stringStart)); buf->Align(4); } - buf->ReplaceWORD(stringTableStart, static_cast(buf->getPos() - stringTableStart)); - buf->ReplaceWORD(stringFileInfoStart, static_cast(buf->getPos() - stringFileInfoStart)); + buf->ReplaceWORD(stringTableStart, + static_cast(buf->getPos() - stringTableStart)); + buf->ReplaceWORD(stringFileInfoStart, + static_cast(buf->getPos() - stringFileInfoStart)); // VarFileInfo size_t varFileInfoStart = buf->getPos(); @@ -184,8 +189,10 @@ buf->AppendWORD(0x0409); buf->AppendWORD(0x04B0); - buf->ReplaceWORD(varFileInfoStart, static_cast(buf->getPos() - varFileInfoStart)); - buf->ReplaceWORD(versionInfoStart, static_cast(buf->getPos() - versionInfoStart)); + buf->ReplaceWORD(varFileInfoStart, + static_cast(buf->getPos() - varFileInfoStart)); + buf->ReplaceWORD(versionInfoStart, + static_cast(buf->getPos() - versionInfoStart)); } void VersionInfoSwap::FillFixedFileInfo(VS_FIXEDFILEINFO *fxi) { @@ -199,12 +206,14 @@ unsigned fv_1 = 0, fv_2 = 0, fv_3 = 0, fv_4 = 0; unsigned pv_1 = 0, pv_2 = 0, pv_3 = 0, pv_4 = 0; - ret = _stscanf_s(fileVersion.c_str(), TEXT("%d.%d.%d.%d"), &fv_1, &fv_2, &fv_3, &fv_4); + ret = _stscanf_s(fileVersion.c_str(), + TEXT("%d.%d.%d.%d"), &fv_1, &fv_2, &fv_3, &fv_4); if (ret <= 0 || ret > 4) { fwprintf(stderr, TEXT("Unable to parse FileVersion value\n")); } - ret = _stscanf_s(productVersion.c_str(), TEXT("%d.%d.%d.%d"), &pv_1, &pv_2, &pv_3, &pv_4); + ret = _stscanf_s(productVersion.c_str(), + TEXT("%d.%d.%d.%d"), &pv_1, &pv_2, &pv_3, &pv_4); if (ret <= 0 || ret > 4) { fwprintf(stderr, TEXT("Unable to parse ProductVersion value\n")); } @@ -227,7 +236,8 @@ } fxi->dwFileOS = VOS_NT_WINDOWS32; - wstring exeExt = m_exeFileName.substr(m_exeFileName.find_last_of(TEXT("."))); + wstring exeExt = + m_exeFileName.substr(m_exeFileName.find_last_of(TEXT("."))); if (exeExt == TEXT(".exe")) { fxi->dwFileType = VFT_APP; } diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/javapackager.cpp --- a/src/jdk.packager/windows/native/jpackager/javapackager.cpp Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,577 +0,0 @@ -/* - * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#include -#include -#include -#include - -#include "IconSwap.h" -#include "VersionInfoSwap.h" - -#define _DEBUG true - -#ifdef _DEBUG -#include -#include -#endif - -using namespace std; - -#define MAX_KEY_LENGTH 255 -#define MAX_VALUE_NAME 16383 -#define TRAILING_PATHSEPARATOR '\\' - -bool from_string(int &result, string &str) { - const char *p = str.c_str(); - int res = 0; - for (int index = 0;; index++) { - char c = str[index]; - if (c == 0 && index > 0) { - result = res; - return true; - } - if (c < '0' || c > '9') - return false; - res = res * 10 + (c - '0'); - } -} - -void PrintCSBackupAPIErrorMessage(DWORD dwErr) { - - char wszMsgBuff[512]; // Buffer for text. - - DWORD dwChars; // Number of chars returned. - - // Try to get the message from the system errors. - dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - dwErr, - 0, - wszMsgBuff, - 512, - NULL); - - if (0 == dwChars) { - // The error code did not exist in the system errors. - // Try ntdsbmsg.dll for the error code. - HINSTANCE hInst; - - // Load the library. - hInst = LoadLibraryA("ntdsbmsg.dll"); - if (NULL == hInst) { -#ifdef _DEBUG - cerr << "cannot load ntdsbmsg.dll\n"; -#endif - return; - } - - // Try getting message text from ntdsbmsg. - dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | - FORMAT_MESSAGE_IGNORE_INSERTS, - hInst, - dwErr, - 0, - wszMsgBuff, - 512, - NULL); - - // Free the library. - FreeLibrary(hInst); - } - - // Display the error message, or generic text if not found. -#ifdef _DEBUG - cerr << "Error value: " << dwErr << " Message: " << ((dwChars > 0) ? wszMsgBuff : "Error message not found.") << endl; -#endif -} - -class JavaVersion { -public: - int v1; - int v2; - int v3; - std::wstring home; - std::wstring path; - - JavaVersion(int pv1, int pv2, int pv3) { - v1 = pv1; - v2 = pv2; - v3 = pv3; - } - - bool operator>(const JavaVersion &other) const { - if (v1 > other.v1) - return true; - if (v1 == other.v1) { - if (v2 > other.v2) - return true; - if (v2 == other.v2) - return v3 > other.v3; - } - return false; - } - - bool operator>=(const JavaVersion &other) const { - if (v1 > other.v1) - return true; - if (v1 == other.v1) { - if (v2 > other.v2) - return true; - if (v2 == other.v2) - return v3 >= other.v3; - } - return false; - } - - bool operator<(const JavaVersion &other) const { - if (v1 < other.v1) - return true; - if (v1 == other.v1) { - if (v2 < other.v2) - return true; - if (v2 == other.v2) - return v3 < other.v3; - } - return false; - } -}; - -class EnvironmentVariable { -private: - std::wstring FValue; - -public: - EnvironmentVariable(std::wstring Name) { - wchar_t* value; - size_t requiredSize; - - _wgetenv_s(&requiredSize, NULL, 0, Name.data()); - - if (requiredSize != 0) { - value = (wchar_t*)malloc(requiredSize * sizeof(wchar_t)); - if (value) - { - // Get the value of the LIB environment variable. - _wgetenv_s(&requiredSize, value, requiredSize, Name.data()); - FValue = value; - } - } - } - - std::wstring get() { - return FValue; - } - - bool exists() { - return !FValue.empty(); - } -}; - -bool checkJavaHome(HKEY key, const char * sKey, const char * jv, JavaVersion *version) { - char p[MAX_KEY_LENGTH]; - HKEY hKey; - bool result = false; - int res; - - strcpy_s(p, MAX_KEY_LENGTH, sKey); - strcat_s(p, MAX_KEY_LENGTH - strlen(p), "\\"); - strcat_s(p, MAX_KEY_LENGTH - strlen(p), jv); - - if (RegOpenKeyExA(key, - p, - 0, - KEY_READ, - &hKey) == ERROR_SUCCESS - ) { - DWORD ot = REG_SZ; - DWORD size = 255; - wchar_t data[MAX_PATH] = { 0 }; - if ((res = RegQueryValueEx(hKey, L"JavaHome", NULL, &ot, (BYTE *)data, &size)) == ERROR_SUCCESS) { - version->home = data; - std::wstring ldata = std::wstring(data) + L"\\bin\\java.exe"; - version->path = data; - result = GetFileAttributes(data) != 0xFFFFFFFF; - } - else { - PrintCSBackupAPIErrorMessage(res); - result = false; - } - RegCloseKey(hKey); - } - else { -#ifdef _DEBUG - cerr << "Can not open registry key" << endl; -#endif - result = false; - } - - return result; -} - -JavaVersion * parseName(const char * jName) { - string s(jName); - - if (s.length() == 0) { - return NULL; - } - - string n; - string::size_type pos; - - pos = s.find_first_of("."); - if (pos != string::npos) { - n = s.substr(0, pos); - s = s.substr(pos + 1); - } - else { - n = s; - s = ""; - } - - int v1 = 0; - - if (n.length() > 0) { - if (!from_string(v1, n)) - return NULL; - } - - - pos = s.find_first_of("."); - if (pos != string::npos) { - n = s.substr(0, pos); - s = s.substr(pos + 1); - } - else { - n = s; - s = ""; - } - - int v2 = 0; - - if (n.length() > 0) { - if (!from_string(v2, n)) - return NULL; - } - - - size_t nn = s.length(); - for (size_t i = 0; i < s.length(); i++) { - string c = s.substr(i, 1); - int tmp; - if (!from_string(tmp, c)) { - nn = i; - break; - } - } - - n = s.substr(0, nn); - if (nn < s.length()) { - s = s.substr(nn + 1); - } - else s = ""; - - int v3 = 0; - - if (n.length() > 0) { - if (!from_string(v3, n)) - v3 = 0; - } - - int v4 = 0; - - // update version - if (s.length() > 0) { - nn = s.length(); - for (size_t i = 0; i < s.length(); i++) { - string c = s.substr(i, 1); - int tmp; - if (!from_string(tmp, c)) { - nn = i; - break; - } - } - - n = s.substr(0, nn); - - if (n.length() > 0) { - if (!from_string(v4, n)) - v4 = 0; - } - } - - return new JavaVersion(v2, v3, v4); -} - -JavaVersion * GetMaxVersion(HKEY key, const char * sKey) { - HKEY hKey; - JavaVersion * result = NULL; - - if (RegOpenKeyExA(key, - sKey, - 0, - KEY_READ, - &hKey) == ERROR_SUCCESS - ) { - DWORD retCode; - char achClass[MAX_PATH]; // buffer for class name - DWORD cchClassName = MAX_PATH; // size of class string - - - DWORD cchValue = MAX_VALUE_NAME; - DWORD cSubKeys = 0; // number of subkeys - DWORD cbMaxSubKey; // longest subkey size - DWORD cchMaxClass; // longest class string - DWORD cValues; // number of values for key - DWORD cchMaxValue; // longest value name - DWORD cbMaxValueData; // longest value data - DWORD cbSecurityDescriptor; // size of security descriptor - FILETIME ftLastWriteTime; // last write time - - retCode = RegQueryInfoKeyA( - hKey, // key handle - achClass, // buffer for class name - &cchClassName, // size of class string - NULL, // reserved - &cSubKeys, // number of subkeys - &cbMaxSubKey, // longest subkey size - &cchMaxClass, // longest class string - &cValues, // number of values for this key - &cchMaxValue, // longest value name - &cbMaxValueData, // longest value data - &cbSecurityDescriptor, // security descriptor - &ftLastWriteTime); // last write time - - if (cSubKeys) { - for (unsigned int i = 0; i < cSubKeys; i++) { - char achKey[MAX_KEY_LENGTH]; // buffer for subkey name - DWORD cbName = MAX_KEY_LENGTH; - retCode = RegEnumKeyExA(hKey, i, - achKey, - &cbName, - NULL, - NULL, - NULL, - &ftLastWriteTime); - - if (retCode == ERROR_SUCCESS) { -#ifdef _DEBUG - cout << achKey << endl; -#endif - JavaVersion * nv = parseName(achKey); - - bool isHome = checkJavaHome(key, sKey, achKey, nv); -#ifdef _DEBUG - wcout << nv->home << " " << isHome << endl; -#endif - - if (isHome) - if (result == NULL) { - result = nv; -#ifdef _DEBUG - cout << "NEW" << endl; -#endif - } - else { - if (nv != NULL) { - if (*nv > *result) { -#ifdef _DEBUG - cout << "REPLACE" << endl; -#endif - delete result; - result = nv; - } - else { -#ifdef _DEBUG - cout << "NO" << endl; -#endif - delete nv; - } - } - } - } - } - } - - RegCloseKey(hKey); - } - - return result; -} - -int fileExists(const std::wstring& path) { - WIN32_FIND_DATA ffd; - HANDLE hFind; - - hFind = FindFirstFile(path.data(), &ffd); - if (hFind == INVALID_HANDLE_VALUE) - return FALSE; - - FindClose(hFind); - return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0; -} - -bool hasEnding(std::wstring const &fullString, std::wstring const &ending) { - if (fullString.length() >= ending.length()) { - return (0 == fullString.compare(fullString.length() - ending.length(), - ending.length(), ending)); - } - else { - return false; - } -} - -std::wstring ExtractFilePath(std::wstring Path) { - std::wstring result; - size_t slash = Path.find_last_of(TRAILING_PATHSEPARATOR); - if (slash != std::wstring::npos) - result = Path.substr(0, slash); - return result; -} - -std::wstring GetCurrentExecutableName() { - TCHAR FileName[MAX_PATH]; - GetModuleFileName(NULL, FileName, MAX_PATH); - return FileName; -} - -int wmain(int argc, wchar_t* argv[]) { - wchar_t buf[MAX_PATH]; - GetModuleFileName(NULL, buf, MAX_PATH); - - std::wstring javacmd; - std::wstring javahome; - - std::wstring exe = GetCurrentExecutableName(); - - if (exe.length() <= 0) { - JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE, "SOFTWARE\\JavaSoft\\JDK"); - if (jv2 != NULL) { - javahome = jv2->home; - javacmd = javahome + L"\\bin\\" + L"\\java.exe"; - } - else { - javacmd = L"java.exe"; - } - } else { - javacmd = ExtractFilePath(exe) + L"\\java.exe"; - } - - std::wstring cmd = L"\"" + javacmd + L"\""; - if (javahome.length() > 0) { - SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str()); - } - - std::wstring memory = L"-Xmx512M"; - std::wstring debug = L""; - std::wstring args = L""; - - for (int i = 1; i < argc; i++) { - std::wstring argument = argv[i]; - std::wstring debug_arg = L"-J-Xdebug:"; - std::wstring icon_swap_arg = L"--icon-swap"; - std::wstring version_swap_arg = L"--version-swap"; - - if (argument.find(L"-J-Xmx", 0) == 0) { - memory = argument.substr(2, argument.length() - 2); - } - else if (argument.find(debug_arg, 0) == 0) { - std::wstring address = argument.substr(debug_arg.length(), - argument.length() - debug_arg.length()); - debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address; - } - else if (argument.find(icon_swap_arg, 0) == 0) { - if (argc != 4) { - fwprintf(stderr, TEXT("Usage: jpackager.exe --icon-swap [Icon File Name] [Executable File Name]\n")); - return 1; - } - - wprintf(L"Icon File Name: %s\n", argv[i + 1]); - wprintf(L"Executable File Name: %s\n", argv[i + 2]); - - if (ChangeIcon(argv[i + 1], argv[i + 2]) == true) { - return 0; - } - else { - fwprintf(stderr, TEXT("failed\n")); - return 1; - } - } - else if (argument.find(version_swap_arg, 0) == 0) { - if (argc != 4) { - fwprintf(stderr, TEXT("Usage: jpackager.exe --version-swap [Property File Name] [Executable File Name]\n")); - return 1; - } - - fwprintf(stdout, TEXT("Resource File Name: %s\n"), argv[i + 1]); - fwprintf(stdout, TEXT("Executable File Name: %s\n"), argv[i + 2]); - - VersionInfoSwap vs(argv[i + 1], argv[i + 2]); - - if (vs.PatchExecutable()) { - return 0; - } - else { - fwprintf(stderr, TEXT("failed\n")); - return 1; - } - } - else { - args = args + L" \"" + argv[i] + L"\""; - } - } - - - cmd += debug + L" " + memory + - L" -m jdk.packager/jdk.packager.Main" + - L" " + args; - -#ifdef _DEBUG - fwprintf (stdout, TEXT("%s"), cmd.c_str()); -#endif - - STARTUPINFO start; - PROCESS_INFORMATION pi; - memset(&start, 0, sizeof (start)); - start.cb = sizeof(start); - - if (!CreateProcess(NULL, (wchar_t *) cmd.data(), - NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &start, &pi)) { -#ifdef _DEBUG - fprintf(stderr, "Cannot start java.exe"); -#endif - return EXIT_FAILURE; - } - - WaitForSingleObject(pi.hProcess, INFINITE); - unsigned long exitCode; - GetExitCodeProcess(pi.hProcess, &exitCode); - - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - - return exitCode; -} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/javapackager.manifest --- a/src/jdk.packager/windows/native/jpackager/javapackager.manifest Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ - - - - JavaFX application packager - - - - - - - - - - - - - - - diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/javapackager.rc --- a/src/jdk.packager/windows/native/jpackager/javapackager.rc Fri Oct 12 19:00:51 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#include "windows.h" - -// Need 2 defines so macro argument to XSTR will get expanded before quoting. -#define XSTR(x) STR(x) -#define STR(x) #x - -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION JFX_FVER - PRODUCTVERSION JFX_FVER - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only - FILEOS 0x4L - // FILETYPE should be 0x1 for .exe and 0x2 for .dll - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", XSTR(JFX_COMPANY) "\0" - VALUE "FileDescription", XSTR(JFX_COMPONENT) "\0" - VALUE "FileVersion", XSTR(JFX_VER) "\0" - VALUE "Full Version", XSTR(JFX_BUILD_ID) "\0" - VALUE "InternalName", XSTR(JFX_INTERNAL_NAME) "\0" - VALUE "LegalCopyright", XSTR(JFX_COPYRIGHT) "\0" - VALUE "OriginalFilename", XSTR(JFX_FNAME) "\0" - VALUE "ProductName", XSTR(JFX_NAME) "\0" - VALUE "ProductVersion", XSTR(JFX_VER) "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END - - -#define MANIFEST_RESOURCE_ID 1 - -// Manifest -// - -MANIFEST_RESOURCE_ID RT_MANIFEST "javapackager.manifest" - diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/jpackager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/windows/native/jpackager/jpackager.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,580 @@ +/* + * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include +#include +#include +#include + +#include "IconSwap.h" +#include "VersionInfoSwap.h" + +#define _DEBUG true + +#ifdef _DEBUG +#include +#include +#endif + +using namespace std; + +#define MAX_KEY_LENGTH 255 +#define MAX_VALUE_NAME 16383 +#define TRAILING_PATHSEPARATOR '\\' + +bool from_string(int &result, string &str) { + const char *p = str.c_str(); + int res = 0; + for (int index = 0;; index++) { + char c = str[index]; + if (c == 0 && index > 0) { + result = res; + return true; + } + if (c < '0' || c > '9') + return false; + res = res * 10 + (c - '0'); + } +} + +void PrintCSBackupAPIErrorMessage(DWORD dwErr) { + + char wszMsgBuff[512]; // Buffer for text. + + DWORD dwChars; // Number of chars returned. + + // Try to get the message from the system errors. + dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + dwErr, + 0, + wszMsgBuff, + 512, + NULL); + + if (0 == dwChars) { + // The error code did not exist in the system errors. + // Try ntdsbmsg.dll for the error code. + HINSTANCE hInst; + + // Load the library. + hInst = LoadLibraryA("ntdsbmsg.dll"); + if (NULL == hInst) { +#ifdef _DEBUG + cerr << "cannot load ntdsbmsg.dll\n"; +#endif + return; + } + + // Try getting message text from ntdsbmsg. + dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE | + FORMAT_MESSAGE_IGNORE_INSERTS, + hInst, + dwErr, + 0, + wszMsgBuff, + 512, + NULL); + + // Free the library. + FreeLibrary(hInst); + } + + // Display the error message, or generic text if not found. +#ifdef _DEBUG + cerr << "Error value: " << dwErr << " Message: " << ((dwChars > 0) ? wszMsgBuff : "Error message not found.") << endl; +#endif +} + +class JavaVersion { +public: + int v1; + int v2; + int v3; + std::wstring home; + std::wstring path; + + JavaVersion(int pv1, int pv2, int pv3) { + v1 = pv1; + v2 = pv2; + v3 = pv3; + } + + bool operator>(const JavaVersion &other) const { + if (v1 > other.v1) + return true; + if (v1 == other.v1) { + if (v2 > other.v2) + return true; + if (v2 == other.v2) + return v3 > other.v3; + } + return false; + } + + bool operator>=(const JavaVersion &other) const { + if (v1 > other.v1) + return true; + if (v1 == other.v1) { + if (v2 > other.v2) + return true; + if (v2 == other.v2) + return v3 >= other.v3; + } + return false; + } + + bool operator<(const JavaVersion &other) const { + if (v1 < other.v1) + return true; + if (v1 == other.v1) { + if (v2 < other.v2) + return true; + if (v2 == other.v2) + return v3 < other.v3; + } + return false; + } +}; + +class EnvironmentVariable { +private: + std::wstring FValue; + +public: + EnvironmentVariable(std::wstring Name) { + wchar_t* value; + size_t requiredSize; + + _wgetenv_s(&requiredSize, NULL, 0, Name.data()); + + if (requiredSize != 0) { + value = (wchar_t*)malloc(requiredSize * sizeof(wchar_t)); + if (value) + { + // Get the value of the LIB environment variable. + _wgetenv_s(&requiredSize, value, requiredSize, Name.data()); + FValue = value; + } + } + } + + std::wstring get() { + return FValue; + } + + bool exists() { + return !FValue.empty(); + } +}; + +bool checkJavaHome(HKEY key, const char * sKey, const char * jv, + JavaVersion *version) { + char p[MAX_KEY_LENGTH]; + HKEY hKey; + bool result = false; + int res; + + strcpy_s(p, MAX_KEY_LENGTH, sKey); + strcat_s(p, MAX_KEY_LENGTH - strlen(p), "\\"); + strcat_s(p, MAX_KEY_LENGTH - strlen(p), jv); + + if (RegOpenKeyExA(key, + p, + 0, + KEY_READ, + &hKey) == ERROR_SUCCESS + ) { + DWORD ot = REG_SZ; + DWORD size = 255; + wchar_t data[MAX_PATH] = { 0 }; + if ((res = RegQueryValueEx(hKey, L"JavaHome", NULL, &ot, + (BYTE *)data, &size)) == ERROR_SUCCESS) { + version->home = data; + std::wstring ldata = std::wstring(data) + L"\\bin\\java.exe"; + version->path = data; + result = GetFileAttributes(data) != 0xFFFFFFFF; + } + else { + PrintCSBackupAPIErrorMessage(res); + result = false; + } + RegCloseKey(hKey); + } + else { +#ifdef _DEBUG + cerr << "Can not open registry key" << endl; +#endif + result = false; + } + + return result; +} + +JavaVersion * parseName(const char * jName) { + string s(jName); + + if (s.length() == 0) { + return NULL; + } + + string n; + string::size_type pos; + + pos = s.find_first_of("."); + if (pos != string::npos) { + n = s.substr(0, pos); + s = s.substr(pos + 1); + } + else { + n = s; + s = ""; + } + + int v1 = 0; + + if (n.length() > 0) { + if (!from_string(v1, n)) + return NULL; + } + + + pos = s.find_first_of("."); + if (pos != string::npos) { + n = s.substr(0, pos); + s = s.substr(pos + 1); + } + else { + n = s; + s = ""; + } + + int v2 = 0; + + if (n.length() > 0) { + if (!from_string(v2, n)) + return NULL; + } + + + size_t nn = s.length(); + for (size_t i = 0; i < s.length(); i++) { + string c = s.substr(i, 1); + int tmp; + if (!from_string(tmp, c)) { + nn = i; + break; + } + } + + n = s.substr(0, nn); + if (nn < s.length()) { + s = s.substr(nn + 1); + } + else s = ""; + + int v3 = 0; + + if (n.length() > 0) { + if (!from_string(v3, n)) + v3 = 0; + } + + int v4 = 0; + + // update version + if (s.length() > 0) { + nn = s.length(); + for (size_t i = 0; i < s.length(); i++) { + string c = s.substr(i, 1); + int tmp; + if (!from_string(tmp, c)) { + nn = i; + break; + } + } + + n = s.substr(0, nn); + + if (n.length() > 0) { + if (!from_string(v4, n)) + v4 = 0; + } + } + + return new JavaVersion(v2, v3, v4); +} + +JavaVersion * GetMaxVersion(HKEY key, const char * sKey) { + HKEY hKey; + JavaVersion * result = NULL; + + if (RegOpenKeyExA(key, + sKey, + 0, + KEY_READ, + &hKey) == ERROR_SUCCESS + ) { + DWORD retCode; + char achClass[MAX_PATH]; // buffer for class name + DWORD cchClassName = MAX_PATH; // size of class string + + + DWORD cchValue = MAX_VALUE_NAME; + DWORD cSubKeys = 0; // number of subkeys + DWORD cbMaxSubKey; // longest subkey size + DWORD cchMaxClass; // longest class string + DWORD cValues; // number of values for key + DWORD cchMaxValue; // longest value name + DWORD cbMaxValueData; // longest value data + DWORD cbSecurityDescriptor; // size of security descriptor + FILETIME ftLastWriteTime; // last write time + + retCode = RegQueryInfoKeyA( + hKey, // key handle + achClass, // buffer for class name + &cchClassName, // size of class string + NULL, // reserved + &cSubKeys, // number of subkeys + &cbMaxSubKey, // longest subkey size + &cchMaxClass, // longest class string + &cValues, // number of values for this key + &cchMaxValue, // longest value name + &cbMaxValueData, // longest value data + &cbSecurityDescriptor, // security descriptor + &ftLastWriteTime); // last write time + + if (cSubKeys) { + for (unsigned int i = 0; i < cSubKeys; i++) { + char achKey[MAX_KEY_LENGTH]; // buffer for subkey name + DWORD cbName = MAX_KEY_LENGTH; + retCode = RegEnumKeyExA(hKey, i, + achKey, + &cbName, + NULL, + NULL, + NULL, + &ftLastWriteTime); + + if (retCode == ERROR_SUCCESS) { +#ifdef _DEBUG + cout << achKey << endl; +#endif + JavaVersion * nv = parseName(achKey); + + bool isHome = checkJavaHome(key, sKey, achKey, nv); +#ifdef _DEBUG + wcout << nv->home << " " << isHome << endl; +#endif + + if (isHome) + if (result == NULL) { + result = nv; +#ifdef _DEBUG + cout << "NEW" << endl; +#endif + } + else { + if (nv != NULL) { + if (*nv > *result) { +#ifdef _DEBUG + cout << "REPLACE" << endl; +#endif + delete result; + result = nv; + } + else { +#ifdef _DEBUG + cout << "NO" << endl; +#endif + delete nv; + } + } + } + } + } + } + + RegCloseKey(hKey); + } + + return result; +} + +int fileExists(const std::wstring& path) { + WIN32_FIND_DATA ffd; + HANDLE hFind; + + hFind = FindFirstFile(path.data(), &ffd); + if (hFind == INVALID_HANDLE_VALUE) + return FALSE; + + FindClose(hFind); + return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0; +} + +bool hasEnding(std::wstring const &fullString, std::wstring const &ending) { + if (fullString.length() >= ending.length()) { + return (0 == fullString.compare(fullString.length() - ending.length(), + ending.length(), ending)); + } + else { + return false; + } +} + +std::wstring ExtractFilePath(std::wstring Path) { + std::wstring result; + size_t slash = Path.find_last_of(TRAILING_PATHSEPARATOR); + if (slash != std::wstring::npos) + result = Path.substr(0, slash); + return result; +} + +std::wstring GetCurrentExecutableName() { + TCHAR FileName[MAX_PATH]; + GetModuleFileName(NULL, FileName, MAX_PATH); + return FileName; +} + +int wmain(int argc, wchar_t* argv[]) { + wchar_t buf[MAX_PATH]; + GetModuleFileName(NULL, buf, MAX_PATH); + + std::wstring javacmd; + std::wstring javahome; + + std::wstring exe = GetCurrentExecutableName(); + + if (exe.length() <= 0) { + JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE, + "SOFTWARE\\JavaSoft\\JDK"); + if (jv2 != NULL) { + javahome = jv2->home; + javacmd = javahome + L"\\bin\\" + L"\\java.exe"; + } + else { + javacmd = L"java.exe"; + } + } else { + javacmd = ExtractFilePath(exe) + L"\\java.exe"; + } + + std::wstring cmd = L"\"" + javacmd + L"\""; + if (javahome.length() > 0) { + SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str()); + } + + std::wstring memory = L"-Xmx512M"; + std::wstring debug = L""; + std::wstring args = L""; + + for (int i = 1; i < argc; i++) { + std::wstring argument = argv[i]; + std::wstring debug_arg = L"-J-Xdebug:"; + std::wstring icon_swap_arg = L"--icon-swap"; + std::wstring version_swap_arg = L"--version-swap"; + + if (argument.find(L"-J-Xmx", 0) == 0) { + memory = argument.substr(2, argument.length() - 2); + } + else if (argument.find(debug_arg, 0) == 0) { + std::wstring address = argument.substr(debug_arg.length(), + argument.length() - debug_arg.length()); + debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address; + } + else if (argument.find(icon_swap_arg, 0) == 0) { + if (argc != 4) { + fwprintf(stderr, TEXT("Usage: jpackager.exe --icon-swap [Icon File Name] [Executable File Name]\n")); + return 1; + } + + wprintf(L"Icon File Name: %s\n", argv[i + 1]); + wprintf(L"Executable File Name: %s\n", argv[i + 2]); + + if (ChangeIcon(argv[i + 1], argv[i + 2]) == true) { + return 0; + } + else { + fwprintf(stderr, TEXT("failed\n")); + return 1; + } + } + else if (argument.find(version_swap_arg, 0) == 0) { + if (argc != 4) { + fwprintf(stderr, TEXT("Usage: jpackager.exe --version-swap [Property File Name] [Executable File Name]\n")); + return 1; + } + + fwprintf(stdout, TEXT("Resource File Name: %s\n"), argv[i + 1]); + fwprintf(stdout, TEXT("Executable File Name: %s\n"), argv[i + 2]); + + VersionInfoSwap vs(argv[i + 1], argv[i + 2]); + + if (vs.PatchExecutable()) { + return 0; + } + else { + fwprintf(stderr, TEXT("failed\n")); + return 1; + } + } + else { + args = args + L" \"" + argv[i] + L"\""; + } + } + + + cmd += debug + L" " + memory + + L" -m jdk.packager/jdk.packager.main.Main" + + L" " + args; + +#ifdef _DEBUG + fwprintf (stdout, TEXT("%s"), cmd.c_str()); +#endif + + STARTUPINFO start; + PROCESS_INFORMATION pi; + memset(&start, 0, sizeof (start)); + start.cb = sizeof(start); + + if (!CreateProcess(NULL, (wchar_t *) cmd.data(), + NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &start, &pi)) { +#ifdef _DEBUG + fprintf(stderr, "Cannot start java.exe"); +#endif + return EXIT_FAILURE; + } + + WaitForSingleObject(pi.hProcess, INFINITE); + unsigned long exitCode; + GetExitCodeProcess(pi.hProcess, &exitCode); + + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + + return exitCode; +} diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/jpackager.manifest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/windows/native/jpackager/jpackager.manifest Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,34 @@ + + + + Java Packager + + + + + + + + + + + + + true + + + + + + + + + + + diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/jpackager/jpackager.rc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.packager/windows/native/jpackager/jpackager.rc Wed Oct 17 13:50:11 2018 -0400 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include "windows.h" + +// Need 2 defines so macro argument to XSTR will get expanded before quoting. +#define XSTR(x) STR(x) +#define STR(x) #x + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION JDK_FVER + PRODUCTVERSION JDK_FVER + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only + FILEOS 0x4L + // FILETYPE should be 0x1 for .exe and 0x2 for .dll + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName", XSTR(JDK_COMPANY) "\0" + VALUE "FileDescription", XSTR(JDK_COMPONENT) "\0" + VALUE "FileVersion", XSTR(JDK_VER) "\0" + VALUE "Full Version", XSTR(JDK_VERSION_STRING) "\0" + VALUE "InternalName", XSTR(JDK_INTERNAL_NAME) "\0" + VALUE "LegalCopyright", XSTR(JDK_COPYRIGHT) "\0" + VALUE "OriginalFilename", XSTR(JDK_FNAME) "\0" + VALUE "ProductName", XSTR(JDK_NAME) "\0" + VALUE "ProductVersion", XSTR(JDK_VER) "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +#define MANIFEST_RESOURCE_ID 1 + +// Manifest +// + +MANIFEST_RESOURCE_ID RT_MANIFEST "jpackager.manifest" + diff -r eaca4369b068 -r e094d5483bd6 src/jdk.packager/windows/native/launcher/WinLauncher.cpp --- a/src/jdk.packager/windows/native/launcher/WinLauncher.cpp Fri Oct 12 19:00:51 2018 -0400 +++ b/src/jdk.packager/windows/native/launcher/WinLauncher.cpp Wed Oct 17 13:50:11 2018 -0400 @@ -68,17 +68,20 @@ if (library == NULL) { std::wstring title = GetTitle(); - std::wstring description = std::wstring(PACKAGER_LIBRARY) + std::wstring(TEXT(" not found.")); - MessageBox(NULL, description.data(), title.data(), MB_ICONERROR | MB_OK); + std::wstring description = std::wstring(PACKAGER_LIBRARY) + + std::wstring(TEXT(" not found.")); + MessageBox(NULL, description.data(), + title.data(), MB_ICONERROR | MB_OK); } else { - start_launcher start = (start_launcher)GetProcAddress(library, "start_launcher"); - stop_launcher stop = (stop_launcher)GetProcAddress(library, "stop_launcher"); + start_launcher start = + (start_launcher)GetProcAddress(library, "start_launcher"); + stop_launcher stop = + (stop_launcher)GetProcAddress(library, "stop_launcher"); - if (start(argc, argv) == true) { - result = 0; - - if (stop != NULL) { + if (start != NULL && stop != NULL) { + if (start(argc, argv) == true) { + result = 0; stop(); } }