--- old/src/java.base/share/classes/sun/launcher/LauncherHelper.java 2018-04-12 12:51:06.500548026 -0700 +++ new/src/java.base/share/classes/sun/launcher/LauncherHelper.java 2018-04-12 12:51:06.244536853 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 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 @@ -502,12 +502,13 @@ } // From src/share/bin/java.c: - // enum LaunchMode { LM_UNKNOWN = 0, LM_CLASS, LM_JAR, LM_MODULE } + // enum LaunchMode { LM_UNKNOWN = 0, LM_CLASS, LM_JAR, LM_MODULE, LM_SOURCE } private static final int LM_UNKNOWN = 0; private static final int LM_CLASS = 1; private static final int LM_JAR = 2; private static final int LM_MODULE = 3; + private static final int LM_SOURCE = 4; static void abort(Throwable t, String msgKey, Object... args) { if (msgKey != null) { @@ -538,13 +539,21 @@ * * @return the application's main class */ + @SuppressWarnings("fallthrough") public static Class checkAndLoadMain(boolean printToStderr, int mode, String what) { initOutput(printToStderr); - Class mainClass = (mode == LM_MODULE) ? loadModuleMainClass(what) - : loadMainClass(mode, what); + Class mainClass = null; + switch (mode) { + case LM_MODULE: case LM_SOURCE: + mainClass = loadModuleMainClass(what); + break; + default: + mainClass = loadMainClass(mode, what); + break; + } // record the real main class for UI purposes // neither method above can return null, they will abort()