I get Could not load Logmanager "org.jboss.logmanager.LogManager" on docker run.. What is the ideal approach to load those logger jars for java 17? This was working fine in java 8. However, using Xbootclasspath/a is not working in java 17. Any better approach to have all these jmx, jboss compatabile with java 17
DockerFile
Below is the docker file which has version of wildfly.
ENV JAVA_HOME=/usr/lib/jvm/java
ENV WILDFLY_VERSION=28.0.1.Final
ENV WILDFLY_SHA1=8702fb7ba8d1249bf058e2223f662e5176b39d0d
ENV JBOSS_HOME=/opt/jboss/wildfly
ENV JMX_EXPORTER_VERSION=0.16.1
RUN cd $HOME && \
curl -OL https://github.com/wildfly/wildfly/releases/download/$WILDFLY_VERSION/wildfly-$WILDFLY_VERSION.tar.gz && \
echo "$WILDFLY_SHA1 wildfly-$WILDFLY_VERSION.tar.gz" | sha1sum -c - && \
tar xf wildfly-$WILDFLY_VERSION.tar.gz && \
mv wildfly-$WILDFLY_VERSION $JBOSS_HOME && \
rm wildfly-$WILDFLY_VERSION.tar.gz
USER root
RUN curl -L -o jmx_prometheus_javaagent-$JMX_EXPORTER_VERSION.jar https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/$JMX_EXPORTER_VERSION/jmx_prometheus_javaagent-$JMX_EXPORTER_VERSION.jar && \
echo "jmx_prometheus_javaagent-$JMX_EXPORTER_VERSION.jar" && \
mkdir -p /opt/jmx_exporter/ && \
mv jmx_prometheus_javaagent-$JMX_EXPORTER_VERSION.jar /opt/jmx_exporter/jmx_exporter.jar && \
chown jboss:jboss /opt/jmx_exporter/
ADD jmx_config.yaml /opt/jmx_exporter/jmx_config.yaml
# Adjust WildFly configuration
RUN sed -i -E "s:.*PRESERVE_JAVA_OPTS.*:. /etc/jboss-as/jboss-as.conf:" /opt/jboss/wildfly/bin/standalone.conf
jboss-config
-Xbootclasspath/a:/opt/jboss/wildfly/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final.jar:/opt/jboss/wildfly/modules/system/layers/base/org/jboss/logging/main/jboss-logging-3.1.4.GA.jar:/opt/jboss/wildfly/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final.jar \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.rmi.port=1234 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager -Djava.util.logging.manager=org.jboss.logmanager.LogManager \
-Djava.util.logging.ConsoleHandler.level=ALL \
-Djava.rmi.server.hostname=hdap-api \
-javaagent:/opt/jmx_exporter/jmx_exporter.jar=1090:/opt/jmx_exporter/jmx_config.yaml \
"
Error
java.lang.ClassNotFoundException: org.jboss.logmanager.LogManager
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
at java.logging/java.util.logging.LogManager$1.run(LogManager.java:239)
at java.logging/java.util.logging.LogManager$1.run(LogManager.java:223)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.logging/java.util.logging.LogManager.<clinit>(LogManager.java:222)
at java.logging/java.util.logging.Logger.demandLogger(Logger.java:649)
at java.logging/java.util.logging.Logger.getLogger(Logger.java:718)
at java.logging/java.util.logging.Logger.getLogger(Logger.java:702)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JmxCollector.<clinit>(JmxCollector.java:39)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JavaAgent.premain(JavaAgent.java:29)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:491)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:503)
WARNING: Failed to load the specified log manager class org.jboss.logmanager.LogManager
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logmanager/Level
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at org.jboss.modules.Module.run(Module.java:341)
at org.jboss.modules.Module.run(Module.java:321)
at org.jboss.modules.Main.main(Main.java:604)
MODULE_OPTSinstead ofJAVA_OPTS?