[
https://issues.apache.org/jira/browse/KARAF-6439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17340788#comment-17340788
]
Frank 'S Jegers commented on KARAF-6439:
----------------------------------------
I experienced the same issue on AIX with karaf 4.2.8 and 4.2.11.
After some testing it appears that this problem is caused by the handling of
the OpenJDK Java versions for AIX of the JDK_JAVA_OPTIONS environment variable :
In a shell, set
{code:java}
export JDK_JAVA_OPTIONS="--patch-module java.base=dummy.jar"{code}
and then run any Java class, like :
{code:java}
java Dummy{code}
or even
{code:java}
java -version{code}
It will fail to launch a JVM, producing errors like :
{code:java}
NOTE: Picked up JDK_JAVA_OPTIONS: --patch-module java.base=dummy.jar
NOTE: Picked up JDK_JAVA_OPTIONS: --patch-module java.base=dummy.jar
Exception in thread "main" java/lang/ExceptionInInitializerError
at java/lang/J9VMInternals.ensureError (java.base@9/J9VMInternals.java:184)
at java/lang/J9VMInternals.recordInitializationFailure
(java.base@9/J9VMInternals.java:173)
at java/lang/ClassLoader.initializeClassLoaders
(java.base@9/ClassLoader.java:210)
at java/lang/Thread.initialize (java.base@9/Thread.java:430)
at java/lang/Thread.<init> (java.base@9/Thread.java:155)
java/lang/RuntimeException: java.base specified more than once to --patch-module
at jdk/internal/module/ModuleBootstrap.fail
(java.base@9/ModuleBootstrap.java:941)
at jdk/internal/module/ModuleBootstrap.decode
(java.base@9/ModuleBootstrap.java:881)
at jdk/internal/module/ModuleBootstrap.initModulePatcher
(java.base@9/ModuleBootstrap.java:572)
at jdk/internal/module/ModuleBootstrap.<clinit>
(java.base@9/ModuleBootstrap.java:100)
at java/lang/ClassLoader.initializeClassLoaders
(java.base@9/ClassLoader.java:210)
at java/lang/Thread.initialize (java.base@9/Thread.java:430)
at java/lang/Thread.<init> (java.base@9/Thread.java:155)
{code}
I filed a bug report on AdoptOpenJDK Github :
[https://github.com/adoptium/adoptium-support/issues/303]
As a workaround, in karaf-wrapper.conf remove the option
"set.JDK_JAVA_OPTIONS=...". Then, add the arguments as JVM Parameters, like
this :
{code:java}
wrapper.java.additional.1=--add-reads=java.xml=java.logging
wrapper.java.additional.2=--add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
wrapper.java.additional.3=--patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar
wrapper.java.additional.4=--patch-module=java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-%KARAF_VERSION%.jar
wrapper.java.additional.5=--add-opens=java.base/java.security=ALL-UNNAMED
wrapper.java.additional.6=--add-opens=java.base/java.net=ALL-UNNAMED
wrapper.java.additional.7=--add-opens=java.base/java.lang=ALL-UNNAMED
wrapper.java.additional.8=--add-opens=java.base/java.util=ALL-UNNAMED
wrapper.java.additional.9=--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
wrapper.java.additional.10=--add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
wrapper.java.additional.11=--add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED
wrapper.java.additional.12=--add-exports=java.base/sun.net.www.protocol.ftp=ALL-UNNAMED
wrapper.java.additional.13=--add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
wrapper.java.additional.14=--add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
wrapper.java.additional.15=--add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
wrapper.java.additional.16=--add-exports=java.base/sun.net.www.content.text=ALL-UNNAMED
wrapper.java.additional.17=--add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
wrapper.java.additional.18=--add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
wrapper.java.additional.19=-Dkaraf.instances=%KARAF_HOME%/instances
wrapper.java.additional.20=-Dkaraf.home=%KARAF_HOME%
wrapper.java.additional.21=-Dkaraf.base=%KARAF_BASE%
wrapper.java.additional.22=-Dkaraf.data=%KARAF_DATA%
wrapper.java.additional.23=-Dkaraf.etc=%KARAF_ETC%
wrapper.java.additional.24=-Dkaraf.log=%KARAF_LOG%
wrapper.java.additional.25=-Dkaraf.restart.jvm.supported=true
wrapper.java.additional.26=-Djava.io.tmpdir=%KARAF_DATA%/tmp
wrapper.java.additional.27=-Djava.util.logging.config.file=%KARAF_ETC%/java.util.logging.properties
wrapper.java.additional.28=-Dcom.sun.management.jmxremote
wrapper.java.additional.29=-Dkaraf.startLocalConsole=false
wrapper.java.additional.30=-Dkaraf.startRemoteShell=true
{code}
Note that you can't set
{code:java}
wrapper.java.additional.3=--patch-module
java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar{code}
So with a space between "patch-module" and "java.base", because the wrapper
will treat the entire value as 1 argument.
Nor can you set
{code:java}
wrapper.java.additional.3=--patch-module
wrapper.java.additional.4=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar{code}
Because then the jvm will complain that the option "java.base" is invalid
You must replace the space with a "=" :
{code:java}
wrapper.java.additional.3=--patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-%KARAF_VERSION%.jar{code}
I tested this on AIX 7.2 :
{code:java}
AIX 7.2 7200-03-02-1846
AIX Kernel Version : 7.2.3.16 TL03
{code}
Tested with these Java versions :
AdoptOpenJDK HotSpot :
{code:java}
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed
mode){code}
AdoptOpenJDK OpenJ9 :
{code:java}
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
Eclipse OpenJ9 VM AdoptOpenJDK-11.0.11+9 (build openj9-0.26.0, JRE 11 AIX
ppc64-64-Bit Compressed References 20210421_970 (JIT enabled, AOT enabled)
OpenJ9 - b4cc246d9
OMR - 162e6f729
JCL - 7796c80419 based on jdk-11.0.11+9){code}
IBM Java :
{code:java}
java version "11.0.10" 2021-01-19
Java(TM) SE Runtime Environment 11.0.10.0-IBM (build 11.0.10+9)
Eclipse OpenJ9 VM 11.0.10.0-IBM (build openj9-0.24.0, JRE 11 AIX ppc64-64-Bit
Compressed References 20210202_3 (JIT enabled, AOT enabled)
OpenJ9 - 345e1b09e2a
OMR - 741e94ea867
JCL - 80f3ace9274 based on jdk-11.0.10+9){code}
> Service fails to start under AIX with OpenJDK J9 Java 11: --patch-module error
> ------------------------------------------------------------------------------
>
> Key: KARAF-6439
> URL: https://issues.apache.org/jira/browse/KARAF-6439
> Project: Karaf
> Issue Type: Bug
> Components: karaf
> Affects Versions: 4.2.3
> Environment: *OS:* IBM AIX 7.2
> *Java:* openjdk version "11.0.4" 2019-07-16
> OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
> Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.15.1, JRE 11 AIX ppc64-64-Bit
> Compressed References 20190717_292 (JIT enabled, AOT enabled)
> OpenJ9 - 0f66c64
> OMR - ec782f2
> JCL - fa49279 based on jdk-11.0.4+11)
> Reporter: Christian Brüssow
> Assignee: Freeman Yue Fang
> Priority: Major
> Attachments: NN_MyAgnet1-wrapper.conf, java-version.out, wrapper.log
>
>
> Under AIX 7.2 I have used the service wrapper. It creates the correct entry
> in /etc/inittab and also creates a wrapper.conf that looks fine (see
> attachement). Here the entry from the inittab:
> {quote}{{NN_MyAgent1:2:once:/data/MyService/karaf/bin/NN_MyAgent1-service
> start}}
> {quote}
> Starting karaf via the start-script from karaf/bin/ works as expected.
> But when starting karaf via the service wrapper, the start fails with the
> following error shown in the wrapper.log (loglevel DEBUG):
> {quote}{{DEBUG | wrapper | 2019/09/30 11:30:38 | Signal trapped.
> Details:DEBUG | wrapper | 2019/09/30 11:30:38 | Signal trapped.
> Details:DEBUG | wrapper | 2019/09/30 11:30:38 | signal number=20
> (SIGCHLD), source="unknown"DEBUG | wrapper | 2019/09/30 11:30:38 | Received
> SIGCHLD, checking JVM process status.DEBUG | wrapper | 2019/09/30 11:30:38
> | JVM process exited with a code of 1, setting the wrapper exit code to
> 1.ERROR | wrapper | 2019/09/30 11:30:38 | JVM exited while loading the
> application.INFO | jvm 1 | 2019/09/30 11:30:38 | Exception in thread
> "main" java/lang/ExceptionInInitializerErrorINFO | jvm 1 | 2019/09/30
> 11:30:38 | at java/lang/J9VMInternals.ensureError (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> java/lang/J9VMInternals.recordInitializationFailure (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> java/lang/ClassLoader.initializeClassLoaders (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> java/lang/Thread.initialize (java.base@9/Unknown Source:4294967295)INFO |
> jvm 1 | 2019/09/30 11:30:38 | at java/lang/Thread.<init>
> (java.base@9/Unknown Source:4294967295)INFO | jvm 1 | 2019/09/30
> 11:30:38 | java/lang/RuntimeException: java.base specified more than once to
> --patch-moduleINFO | jvm 1 | 2019/09/30 11:30:38 | at
> jdk/internal/module/ModuleBootstrap.fail (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> jdk/internal/module/ModuleBootstrap.decode (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> jdk/internal/module/ModuleBootstrap.initModulePatcher (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> jdk/internal/module/ModuleBootstrap.<clinit> (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> java/lang/ClassLoader.initializeClassLoaders (java.base@9/Unknown
> Source:4294967295)INFO | jvm 1 | 2019/09/30 11:30:38 | at
> java/lang/Thread.initialize (java.base@9/Unknown Source:4294967295)INFO |
> jvm 1 | 2019/09/30 11:30:38 | at java/lang/Thread.<init>
> (java.base@9/Unknown Source:4294967295)DEBUG | wrapper | 2019/09/30
> 11:30:38 | JVM was only running for 0 seconds leading to a failed restart
> count of 1.}}
> {quote}
> The entries in the wrapper.conf are looking ok for me, see attachement.
> The Java used is an OpenJDK OpenJ9 Java 11 from AdoptJDK.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)