perwendel / spark

A simple expressive web framework for java. Spark has a kotlin DSL https://github.com/perwendel/spark-kotlin
Apache License 2.0
9.63k stars 1.56k forks source link

ERROR spark.Spark - ignite failed with GraalVM build and spark versions 2.9.2 - 2.9.3 #1247

Open AlessioCoser opened 2 years ago

AlessioCoser commented 2 years ago

Using this example: https://github.com/AlessioCoser/graalvm_webserver/tree/hello-world I'm able to run in a container a Spark Webserver built with GraalVm 21.2.0.

When I try to increase the version of spark to 2.9.2 or 2.9.3 I get this error:

[Thread-0] ERROR spark.Spark - ignite failed
java.lang.IllegalStateException: java.lang.NoSuchMethodException: no such method: org.eclipse.jetty.server.ForwardedRequestCustomizer$Forwarded.handleCipherSuite(HttpField)void/invokeVirtual
        at org.eclipse.jetty.server.ForwardedRequestCustomizer.updateHandles(ForwardedRequestCustomizer.java:504)
        at org.eclipse.jetty.server.ForwardedRequestCustomizer.<init>(ForwardedRequestCustomizer.java:82)
        at spark.embeddedserver.jetty.SocketConnectorFactory.createHttpConnectionFactory(SocketConnectorFactory.java:113)
        at spark.embeddedserver.jetty.SocketConnectorFactory.createSocketConnector(SocketConnectorFactory.java:48)
        at spark.embeddedserver.jetty.EmbeddedJettyServer.ignite(EmbeddedJettyServer.java:108)
        at spark.Service.lambda$init$2(Service.java:632)
        at java.lang.Thread.run(Thread.java:829)
        at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:567)
        at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:192)
Caused by: java.lang.NoSuchMethodException: no such method: org.eclipse.jetty.server.ForwardedRequestCustomizer$Forwarded.handleCipherSuite(HttpField)void/invokeVirtual
        at java.lang.invoke.MemberName.makeAccessException(MemberName.java:963)
        at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1101)
        at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:2030)
        at java.lang.invoke.MethodHandles$Lookup.findVirtual(MethodHandles.java:1194)
        at org.eclipse.jetty.server.ForwardedRequestCustomizer.updateForwardedHandle(ForwardedRequestCustomizer.java:516)
        at org.eclipse.jetty.server.ForwardedRequestCustomizer.updateHandles(ForwardedRequestCustomizer.java:482)
        ... 8 more
Caused by: java.lang.NoSuchMethodError: org.eclipse.jetty.server.ForwardedRequestCustomizer$Forwarded.handleCipherSuite(org.eclipse.jetty.http.HttpField)
        at com.oracle.svm.methodhandles.Util_java_lang_invoke_MethodHandleNatives.resolve(Target_java_lang_invoke_MethodHandleNatives.java:342)
        at java.lang.invoke.MethodHandleNatives.resolve(MethodHandleNatives.java:214)
        at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:1070)
        at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1098)
        ... 12 more

Here the graalvm native image build configuration:

native-image \
    --static \
    --enable-http \
    --no-fallback \
    --initialize-at-build-time=org.eclipse.jetty,org.slf4j,javax.servlet,org.sparkjava \
    -cp app.jar \
    -H:Name=app \
    -H:Class=webserver.App \
    -H:+ReportUnsupportedElementsAtRuntime \
    -H:+ReportExceptionStackTraces