diff --git a/tools/plugins/com.liferay.ide.server.core/src/com/liferay/ide/server/core/portal/PortalServerBehavior.java b/tools/plugins/com.liferay.ide.server.core/src/com/liferay/ide/server/core/portal/PortalServerBehavior.java index 5d31556560..4116c022b1 100644 --- a/tools/plugins/com.liferay.ide.server.core/src/com/liferay/ide/server/core/portal/PortalServerBehavior.java +++ b/tools/plugins/com.liferay.ide.server.core/src/com/liferay/ide/server/core/portal/PortalServerBehavior.java @@ -40,6 +40,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.stream.Collectors; import java.util.stream.Stream; import org.eclipse.core.resources.IProject; @@ -61,9 +62,11 @@ import org.eclipse.debug.core.model.IProcess; import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector; import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants; import org.eclipse.jdt.launching.IRuntimeClasspathEntry; import org.eclipse.jdt.launching.IVMInstall; +import org.eclipse.jdt.launching.IVMInstall2; import org.eclipse.jdt.launching.IVMInstallType; import org.eclipse.jdt.launching.JavaRuntime; import org.eclipse.wst.server.core.IModule; @@ -509,6 +512,39 @@ public void setupLaunchConfiguration(ILaunchConfigurationWorkingCopy launch, IPr } } + if (vmInstall instanceof IVMInstall2) { + IVMInstall2 vmInstall2 = (IVMInstall2)vmInstall; + + String javaVersion = vmInstall2.getJavaVersion(); + + if ((javaVersion != null) && (JavaCore.compareJavaVersions(javaVersion, JavaCore.VERSION_11) >= 0)) { + List opens = new ArrayList<>(); + + opens.add("--add-opens=java.base/java.io=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.lang=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.lang.invoke=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.lang.ref=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.lang.reflect=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.net=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.nio=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.nio.charset=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.text=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.util=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.util.concurrent=ALL-UNNAMED"); + opens.add("--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED"); + opens.add("--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"); + opens.add("--add-opens=java.base/sun.nio.cs=ALL-UNNAMED"); + opens.add("--add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED"); + + launchEnvrionment.put( + "JDK_JAVA_OPTIONS", + opens.stream( + ).collect( + Collectors.joining(" ") + )); + } + } + launch.setAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES, launchEnvrionment); launch.setAttribute(ILaunchManager.ATTR_APPEND_ENVIRONMENT_VARIABLES, Boolean.FALSE);