[jbosstools-issues] [JBoss JIRA] (JBIDE-19049) Enable JBoss servers to run with java 9

Rob Stryker (JIRA) issues at jboss.org
Fri Jan 23 14:13:49 EST 2015


    [ https://issues.jboss.org/browse/JBIDE-19049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13034704#comment-13034704 ] 

Rob Stryker commented on JBIDE-19049:
-------------------------------------

tl;dr:   Mars is missing functionality for properly using Java 9. Because it's missing this functionality, the Java 9 jre/jdk is not marked as compatible with the minimum execution environment for the server, and cannot be used. 

If you go to window -> Preferences  and type "Execution Environment" you will see that there is no JavaSE-1.9 execution environment. 

Theoretically, java 9 should also show up as valid for a j7 or j8 execution environment, but it's not. 

Tracing through when adding the jre/jdk to "Installed JREs", I see:

{code}
 EnvironmentsManager.analyze(IVMInstall, IProgressMonitor) line: 342	
EnvironmentsManager.vmAdded(IVMInstall) line: 380	
JavaRuntime.fireVMAdded(IVMInstall) line: 2387	
{code}

I see the following code:

{code}
		Analyzer[] analyzers = getAnalyzers();
		for (int i = 0; i < analyzers.length; i++) {
			Analyzer analyzer = analyzers[i];
			try {
				CompatibleEnvironment[] environments = analyzer.analyze(vm, monitor);
{code}

There is only 1 "analyzer", and there are 0 compatible environments for the given jdk / jre. 

Looking in ExecutionEnvironmentAnalyzer, we see the following code:

{code}
				if (javaVersion.startsWith("1.8")) //$NON-NLS-1$
					types = getTypes(JavaSE_1_8);
				else if (javaVersion.startsWith("1.7")) //$NON-NLS-1$
					types = getTypes(JavaSE_1_7);
				else if (javaVersion.startsWith("1.6")) //$NON-NLS-1$
					types = getTypes(JavaSE_1_6);
				else if (javaVersion.startsWith("1.5")) //$NON-NLS-1$
					types = getTypes(J2SE_1_5);
				else if (javaVersion.startsWith("1.4")) //$NON-NLS-1$
					types = getTypes(J2SE_1_4);
				else if (javaVersion.startsWith("1.3")) //$NON-NLS-1$
					types = getTypes(J2SE_1_3);
				else if (javaVersion.startsWith("1.2")) //$NON-NLS-1$
					types = getTypes(J2SE_1_2);
				else if (javaVersion.startsWith("1.1")) { //$NON-NLS-1$
					if ((vm instanceof IVMInstall3) && isFoundation1_1((IVMInstall3) vm))
						types = getTypes(CDC_FOUNDATION_1_1);
					else
						types = getTypes(JRE_1_1);
				} else if (javaVersion.startsWith("1.0")) { //$NON-NLS-1$
					if ((vm instanceof IVMInstall3) && isFoundation1_0((IVMInstall3) vm)) 
						types = getTypes(CDC_FOUNDATION_1_0);
				}
{code}

So basically, they're missing an if-statement for java9 as well as a constant for it etc. 

> Enable JBoss servers to run with java 9
> ---------------------------------------
>
>                 Key: JBIDE-19049
>                 URL: https://issues.jboss.org/browse/JBIDE-19049
>             Project: Tools (JBoss Tools)
>          Issue Type: Feature Request
>          Components: server
>    Affects Versions: 4.2.2.Final
>            Reporter: Martin Malina
>            Assignee: Rob Stryker
>             Fix For: 4.3.0.Alpha1
>
>
> I briefly tried to use java 9 for our tooling and to run servers.
> I downloaded it from here:
> https://jdk9.java.net/download/
> {code}
> nattura:8.0.2 rasp$ java -version
> java version "1.9.0-ea"
> Java(TM) SE Runtime Environment (build 1.9.0-ea-b45)
> Java HotSpot(TM) 64-Bit Server VM (build 1.9.0-ea-b45, mixed mode)
> {code}
> I use OS X 10.10 Yosemite.
> There are a couple of problems:
> 1. When I add a WildFly 8.2 server into JBDS 8.0.2, I cannot change the runtime to use java 9 - it seems we restrict that.
> 2. Even if I could, we need to make sure -XX:MaxPermSize is not used in the server launch command. When I tried to run WildFly 8.2 from the terminal, it wouldn't work unless I removed the max perm size argument. Apparently java 9 does not just ignore this parameter (as java 8 did), but it does not allow it at all.
> {code}
> nattura:bin rasp$ ./standalone.sh 
> =========================================================================
>   JBoss Bootstrap Environment
>   JBOSS_HOME: /Users/rasp/jbossqa/runtimes/wildfly-8.2.0.Final
>   JAVA: /Library/Java/JavaVirtualMachines/jdk1.9.0.jdk/Contents/Home/bin/java
>   JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
> =========================================================================
> Unrecognized VM option 'MaxPermSize=256m'
> Error: Could not create the Java Virtual Machine.
> Error: A fatal exception has occurred. Program will exit.
> {code}
> Of course it's questionable if we should allow java 9 for current servers at all as they don't support it officially. But I would say there is no need to restrict it if it works.



--
This message was sent by Atlassian JIRA
(v6.3.11#6341)


More information about the jbosstools-issues mailing list