X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fbin%2FLauncher.java;h=61b87e393d684a33f8423de5e68a9fe90ef19892;hb=135ff4955524fd15e9558364c1e94183f02fd847;hp=c8f2f4840ae9e234528e4b406c34d912ddbb66bc;hpb=d811732f53c406304e5b5302ba986b56e00a36a2;p=jalview.git diff --git a/src/jalview/bin/Launcher.java b/src/jalview/bin/Launcher.java index c8f2f48..61b87e3 100644 --- a/src/jalview/bin/Launcher.java +++ b/src/jalview/bin/Launcher.java @@ -25,8 +25,10 @@ import java.io.IOException; import java.lang.management.ManagementFactory; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import jalview.util.ChannelProperties; +import jalview.util.LaunchUtils; /** * A Launcher class for Jalview. This class is used to launch Jalview from the @@ -60,6 +62,14 @@ public class Launcher */ public static void main(String[] args) { + if (!LaunchUtils.checkJavaVersion()) + { + System.err.println("WARNING - The Java version being used (Java " + + LaunchUtils.getJavaVersion() + + ") may lead to problems. This installation of Jalview should be used with Java " + + LaunchUtils.getJavaCompileVersion() + "."); + } + final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"; @@ -98,12 +108,44 @@ public class Launcher jvmmemmax = arg.substring( MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME.length() + 2); } + // --doubledash versions + else if (arg.startsWith("--" + + MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME + "=")) + { + jvmmempc = arg.substring( + MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME.length() + + 3); + } + else if (arg.startsWith( + "--" + MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME + "=")) + { + jvmmemmax = arg.substring( + MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME.length() + 3); + } + // retain arg else { arguments.add(arg); } } + // use saved preferences if no cmdline args + boolean useCustomisedSettings = LaunchUtils + .getBooleanUserPreference(MemorySetting.CUSTOMISED_SETTINGS); + if (useCustomisedSettings) + { + if (jvmmempc == null) + { + jvmmempc = LaunchUtils + .getUserPreference(MemorySetting.MEMORY_JVMMEMPC); + } + if (jvmmemmax == null) + { + jvmmemmax = LaunchUtils + .getUserPreference(MemorySetting.MEMORY_JVMMEMMAX); + } + } + // add memory setting if not specified boolean memSet = false; boolean dockIcon = false; @@ -152,13 +194,22 @@ public class Launcher { // -Xdock:name=... doesn't actually work :( // Leaving it in in case it gets fixed - command.add("-Xdock:name=" + "Jalview"); + command.add( + "-Xdock:name=" + ChannelProperties.getProperty("app_name")); + // this launches WITHOUT an icon in the macOS dock. Could be useful for + // getdown? + // command.add("-Dapple.awt.UIElement=false"); + // This also does not work for the dock + command.add("-Dcom.apple.mrj.application.apple.menu.about.name=" + + ChannelProperties.getProperty("app_name")); } } String scalePropertyArg = HiDPISetting.getScalePropertyArg(); if (scalePropertyArg != null) { + System.out.println("Running " + startClass + " with scale setting " + + scalePropertyArg); command.add(scalePropertyArg); } @@ -167,12 +218,19 @@ public class Launcher final ProcessBuilder builder = new ProcessBuilder(command); - // System.out.println("COMMAND: " + String.join(" ", builder.command())); + if (Boolean.parseBoolean(System.getProperty("launcherprint", "false"))) + { + System.out.println( + "LAUNCHER COMMAND: " + String.join(" ", builder.command())); + } System.out.println("Running " + startClass + " with " - + (memSetting == null ? "no memory setting" : memSetting)); + + (memSetting == null ? "no memory setting" + : ("memory setting " + memSetting))); - if (Boolean.parseBoolean(System.getProperty("launcherstop"))) + if (Boolean.parseBoolean(System.getProperty("launcherstop", "false"))) { + System.out.println( + "System property 'launcherstop' is set and not 'false'. Exiting."); System.exit(0); } try @@ -182,7 +240,7 @@ public class Launcher process.waitFor(); } catch (IOException e) { - if (e.getMessage().toLowerCase().contains("memory")) + if (e.getMessage().toLowerCase(Locale.ROOT).contains("memory")) { System.out.println("Caught a memory exception: " + e.getMessage()); // Probably the "Cannot allocate memory" error, try without the memory @@ -217,8 +275,6 @@ public class Launcher { e.printStackTrace(); } - // System.exit(0); - } }