diff --git a/sdk/src/org.graalvm.launcher/src/META-INF/native-image/org.graalvm.launcher/native-image.properties b/sdk/src/org.graalvm.launcher/src/META-INF/native-image/org.graalvm.launcher/native-image.properties index 4cb5e87f0b3c..844957570e24 100644 --- a/sdk/src/org.graalvm.launcher/src/META-INF/native-image/org.graalvm.launcher/native-image.properties +++ b/sdk/src/org.graalvm.launcher/src/META-INF/native-image/org.graalvm.launcher/native-image.properties @@ -1,6 +1,5 @@ -JavaArgs = --add-modules=java.scripting - Args = --features=com.oracle.svm.thirdparty.jline.JLine3Feature \ + --add-modules=java.scripting \ --add-reads=org.graalvm.launcher=org.graalvm.nativeimage.pointsto \ --add-reads=org.graalvm.launcher=org.graalvm.nativeimage.builder \ --add-exports=org.graalvm.truffle/com.oracle.truffle.object=ALL-UNNAMED \ diff --git a/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/DefaultOptionHandler.java b/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/DefaultOptionHandler.java index 733651c9db9e..9b3381d2f781 100644 --- a/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/DefaultOptionHandler.java +++ b/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/DefaultOptionHandler.java @@ -35,7 +35,6 @@ import java.util.List; import java.util.regex.Pattern; -import jdk.vm.ci.runtime.JVMCI; import org.graalvm.compiler.options.OptionType; import com.oracle.svm.driver.MacroOption.MacroOptionKind; @@ -44,6 +43,7 @@ import jdk.vm.ci.aarch64.AArch64; import jdk.vm.ci.amd64.AMD64; import jdk.vm.ci.code.Architecture; +import jdk.vm.ci.runtime.JVMCI; class DefaultOptionHandler extends NativeImage.OptionHandler { @@ -51,6 +51,9 @@ class DefaultOptionHandler extends NativeImage.OptionHandler { private static final String requireValidJarFileMessage = "-jar requires a valid jarfile"; private static final String newStyleClasspathOptionName = "--class-path"; + private static final String addModulesOption = "--add-modules"; + private static final String addModulesErrorMessage = " requires modules to be specified"; + static final String helpText = NativeImage.getResource("/Help.txt"); static final String helpExtraText = NativeImage.getResource("/HelpExtra.txt"); @@ -145,6 +148,14 @@ public boolean consume(ArgumentQueue args) { nativeImage.addPlainImageBuilderArg(nativeImage.oHModule + mainClassModuleArgParts[0]); nativeImage.setModuleOptionMode(true); return true; + case addModulesOption: + args.poll(); + String addModulesArgs = args.poll(); + if (addModulesArgs == null) { + NativeImage.showError(headArg + addModulesErrorMessage); + } + nativeImage.addImageBuilderJavaArgs(addModulesOption, addModulesArgs); + return true; case "--configurations-path": args.poll(); String configPath = args.poll(); @@ -314,6 +325,15 @@ public boolean consume(ArgumentQueue args) { } return true; } + if (headArg.startsWith(addModulesOption + "=")) { + args.poll(); + String addModulesArgs = headArg.substring(addModulesOption.length() + 1); + if (addModulesArgs.isEmpty()) { + NativeImage.showError(headArg + addModulesErrorMessage); + } + nativeImage.addImageBuilderJavaArgs(addModulesOption, addModulesArgs); + return true; + } if (headArg.startsWith("@") && !disableAtFiles) { args.poll(); headArg = headArg.substring(1);