Skip to content

Conversation

@mrk-andreev
Copy link

In upstream jetty-server is not compatible with jetty-util that cause NoClassDefFoundError at AbstractConnector:

root@b4189abf2fba:/opt/app# bin/benchmark-worker \
  --port 9090 \
  --stats-port 9091
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.13.3/log4j-slf4j-impl-2.13.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/.m2/repository/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
11:10:37.528 [main] INFO - Logging initialized @604ms to org.eclipse.jetty.util.log.Slf4jLog
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/util/component/Graceful$Shutdown
        at org.eclipse.jetty.server.AbstractConnector.<init>(AbstractConnector.java:156)
        at org.eclipse.jetty.server.AbstractNetworkConnector.<init>(AbstractNetworkConnector.java:44)
        at org.eclipse.jetty.server.ServerConnector.<init>(ServerConnector.java:219)
        at org.eclipse.jetty.server.ServerConnector.<init>(ServerConnector.java:94)
        at org.eclipse.jetty.server.Server.<init>(Server.java:122)
        at org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider.start(PrometheusMetricsProvider.java:103)
        at io.openmessaging.benchmark.worker.BenchmarkWorker.main(BenchmarkWorker.java:77)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.util.component.Graceful$Shutdown
        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:526)
        ... 7 more

Because old jetty-util contains different interface

public interface Graceful {
    Future<Void> shutdown();
}

but AbstractConnector expected different signature:

private final Graceful.Shutdown _shutdown = new Graceful.Shutdown();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant