diff --git a/src/java.base/unix/classes/java/lang/ProcessImpl.java b/src/java.base/unix/classes/java/lang/ProcessImpl.java index 7b5d27f1cc161..390a4f284774a 100644 --- a/src/java.base/unix/classes/java/lang/ProcessImpl.java +++ b/src/java.base/unix/classes/java/lang/ProcessImpl.java @@ -100,16 +100,26 @@ private static LaunchMechanism launchMechanism() { // Should be value of a LaunchMechanism enum LaunchMechanism lm = LaunchMechanism.valueOf(s.toUpperCase(Locale.ROOT)); switch (OperatingSystem.current()) { - case LINUX: - return lm; // All options are valid for Linux + case LINUX: { + // All options are valid for Linux, but VFORK is deprecated and results + // in a warning + if (lm == LaunchMechanism.VFORK) { + System.err.println("VFORK MODE DEPRECATED"); + System.err.println(""" + The VFORK launch mechanism has been deprecated for being dangerous. + It will be removed in a future java version. Either remove the + jdk.lang.Process.launchMechanism property (preferred) or use FORK mode + instead (-Djdk.lang.Process.launchMechanism=FORK). + """); + } + return lm; + } case AIX: case MACOS: if (lm != LaunchMechanism.VFORK) { return lm; // All but VFORK are valid } break; - case WINDOWS: - // fall through to throw to Error } } catch (IllegalArgumentException e) { }