I use Java 17 with Jetty 11.0.9. I started Jetty with the following command
java --add-opens=java.base/java.lang=ALL-UNNAMED -jar start.jar
Then I am facing exception followings.
2022-05-06 16:40:45.314:WARN :oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@593aaf41{vte.cx (alpha),/vtecx,file:///usr/local/jetty-home-11.0.9/webapps/vtecx/,UNAVAILABLE}{/usr/local/jetty-home-11.0.9/webapps/vtecx}
java.lang.IllegalAccessError: class jdk.internal.reflect.ConstructorAccessorImpl loaded by javassist.Loader @46292372 cannot access jdk/internal/reflect superclass jdk.internal.reflect.MagicAccessorImpl
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:874)
at javassist.Loader.findClass(Loader.java:419)
at javassist.Loader.loadClass(Loader.java:350)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.System$2.defineClass(System.java:2303)
at java.base/jdk.internal.reflect.ClassDefiner.defineClass(ClassDefiner.java:66)
at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:401)
at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:395)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at java.base/jdk.internal.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:394)
at java.base/jdk.internal.reflect.MethodAccessorGenerator.generateConstructor(MethodAccessorGenerator.java:92)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:65)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347)
at java.base/java.lang.Class.newInstance(Class.java:645)
at org.msgpack.template.builder.ReflectionTemplateBuilder$ReflectionClassTemplate.read(ReflectionTemplateBuilder.java:132)
at org.msgpack.template.AbstractTemplate.read(AbstractTemplate.java:31)
at org.msgpack.template.ListTemplate.read(ListTemplate.java:66)
at org.msgpack.template.ListTemplate.read(ListTemplate.java:27)
at org.msgpack.template.builder.ReflectionTemplateBuilder$FieldTemplateImpl.read(ReflectionTemplateBuilder.java:70)
at org.msgpack.template.builder.ReflectionTemplateBuilder$ReflectionClassTemplate.read(ReflectionTemplateBuilder.java:143)
at org.msgpack.template.AbstractTemplate.read(AbstractTemplate.java:31)
at org.msgpack.MessagePack.read(MessagePack.java:388)
at org.msgpack.MessagePack.read(MessagePack.java:371)
at jp.reflexworks.atom.mapper.FeedTemplateMapper.fromMessagePack(FeedTemplateMapper.java:1014)
I have confirmed that it works fine in a non-servlet standalone.
Does the --add-opens
parameter work correctly in a servlet environment?
Or could it be due to other causes such as javassist?
The unit test does indeed succeed. It does not fail all the way on Jetty either, it seems to be processed correctly up to the halfway point. It also looks like the error occurs when running multiple runs in a thread.
--list-config is followings.
$ java -jar start.jar --list-config
Enabled Modules:
----------------
0) bytebufferpool transitive provider of bytebufferpool for server
ini template available with --add-module=bytebufferpool
1) resources transitive provider of resources for logging-jetty
2) logging/slf4j transitive provider of logging/slf4j for logging-jetty
dynamic dependency of logging-jetty
3) logging-jetty transitive provider of logging for threadpool
transitive provider of logging for server
4) threadpool transitive provider of threadpool for server
ini template available with --add-module=threadpool
5) server ${jetty.base}/start.d/server.ini
6) jndi transitive provider of jndi for plus
7) security transitive provider of security for webapp
transitive provider of security for plus
8) servlet transitive provider of servlet for webapp
9) webapp transitive provider of webapp for plus
transitive provider of webapp for deploy
ini template available with --add-module=webapp
10) plus transitive provider of plus for annotations
11) annotations transitive provider of annotations for websocket-jetty
12) client transitive provider of client for websocket-jakarta
13) deploy ${jetty.base}/start.d/deploy.ini
14) http ${jetty.base}/start.d/http.ini
15) ssl ${jetty.base}/start.d/ssl.ini
16) https ${jetty.base}/start.d/https.ini
17) rewrite ${jetty.base}/start.d/rewrite.ini
18) websocket-jakarta transitive provider of websocket-jakarta for websocket
19) websocket-jetty transitive provider of websocket-jetty for websocket
20) websocket ${jetty.base}/start.d/websocket.ini
Java Environment:
-----------------
java.home = /Library/Java/JavaVirtualMachines/jdk-17.0.3.jdk/Contents/Home
java.vm.vendor = Oracle Corporation
java.vm.version = 17.0.3+8-LTS-111
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vm.info = mixed mode, sharing
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 17.0.3+8-LTS-111
java.io.tmpdir = /var/folders/jd/sclp7v4j4fxgmx00hw47q1vm0000gn/T/
user.dir = /usr/local/jetty-home-11.0.9
user.language = ja
user.country = JP
Jetty Environment:
------------------
jetty.version = 11.0.9
jetty.tag.version = jetty-11.0.9
jetty.build = 243a48a658a183130a8c8de353178d154ca04f04
jetty.home = /usr/local/jetty-home-11.0.9
jetty.base = /usr/local/jetty-home-11.0.9
Config Search Order:
--------------------
<command-line>
${jetty.base} -> /usr/local/jetty-home-11.0.9
${jetty.home} -> /usr/local/jetty-home-11.0.9
System Properties:
------------------
(no system properties specified)
Properties:
-----------
java.version = 17.0.3
java.version.major = 17
java.version.micro = 3
java.version.minor = 0
java.version.platform = 17
jetty.base = /usr/local/jetty-home-11.0.9
jetty.base.uri = file:///usr/local/jetty-home-11.0.9
jetty.home = /usr/local/jetty-home-11.0.9
jetty.home.uri = file:///usr/local/jetty-home-11.0.9
jetty.sslContext.keyStorePassword = OBF:xxxxxxxxxx
jetty.webapp.addServerClasses = org.eclipse.jetty.logging.,${jetty.home.uri}/lib/logging/,org.slf4j.
runtime.feature.alpn = true
slf4j.version = 2.0.0-alpha6
Jetty Server Classpath:
-----------------------
Version Information on 36 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
changes to the --module=name command line options will be reflected here.
0: (dir) | ${jetty.base}/resources
1: 2.0.0-alpha6 | ${jetty.base}/lib/logging/slf4j-api-2.0.0-alpha6.jar
2: 11.0.9 | ${jetty.base}/lib/logging/jetty-slf4j-impl-11.0.9.jar
3: 5.0.2 | ${jetty.base}/lib/jetty-jakarta-servlet-api-5.0.2.jar
4: 11.0.9 | ${jetty.base}/lib/jetty-http-11.0.9.jar
5: 11.0.9 | ${jetty.base}/lib/jetty-server-11.0.9.jar
6: 11.0.9 | ${jetty.base}/lib/jetty-xml-11.0.9.jar
7: 11.0.9 | ${jetty.base}/lib/jetty-util-11.0.9.jar
8: 11.0.9 | ${jetty.base}/lib/jetty-io-11.0.9.jar
9: 11.0.9 | ${jetty.base}/lib/jetty-jndi-11.0.9.jar
10: 11.0.9 | ${jetty.base}/lib/jetty-security-11.0.9.jar
11: 11.0.9 | ${jetty.base}/lib/jetty-servlet-11.0.9.jar
12: 11.0.9 | ${jetty.base}/lib/jetty-webapp-11.0.9.jar
13: 11.0.9 | ${jetty.base}/lib/jetty-plus-11.0.9.jar
14: 2.0.0 | ${jetty.base}/lib/jakarta.transaction-api-2.0.0.jar
15: 11.0.9 | ${jetty.base}/lib/jetty-annotations-11.0.9.jar
16: 9.2 | ${jetty.base}/lib/annotations/asm-9.2.jar
17: 9.2 | ${jetty.base}/lib/annotations/asm-analysis-9.2.jar
18: 9.2 | ${jetty.base}/lib/annotations/asm-commons-9.2.jar
19: 9.2 | ${jetty.base}/lib/annotations/asm-tree-9.2.jar
20: 2.0.0 | ${jetty.base}/lib/annotations/jakarta.annotation-api-2.0.0.jar
21: 11.0.9 | ${jetty.base}/lib/jetty-client-11.0.9.jar
22: 11.0.9 | ${jetty.base}/lib/jetty-alpn-client-11.0.9.jar
23: 11.0.9 | ${jetty.base}/lib/jetty-deploy-11.0.9.jar
24: 11.0.9 | ${jetty.base}/lib/jetty-rewrite-11.0.9.jar
25: 11.0.9 | ${jetty.base}/lib/websocket/websocket-core-common-11.0.9.jar
26: 11.0.9 | ${jetty.base}/lib/websocket/websocket-core-client-11.0.9.jar
27: 11.0.9 | ${jetty.base}/lib/websocket/websocket-core-server-11.0.9.jar
28: 11.0.9 | ${jetty.base}/lib/websocket/websocket-servlet-11.0.9.jar
29: 2.0.0 | ${jetty.base}/lib/websocket/jetty-jakarta-websocket-api-2.0.0.jar
30: 11.0.9 | ${jetty.base}/lib/websocket/websocket-jakarta-client-11.0.9.jar
31: 11.0.9 | ${jetty.base}/lib/websocket/websocket-jakarta-common-11.0.9.jar
32: 11.0.9 | ${jetty.base}/lib/websocket/websocket-jakarta-server-11.0.9.jar
33: 11.0.9 | ${jetty.base}/lib/websocket/websocket-jetty-api-11.0.9.jar
34: 11.0.9 | ${jetty.base}/lib/websocket/websocket-jetty-common-11.0.9.jar
35: 11.0.9 | ${jetty.base}/lib/websocket/websocket-jetty-server-11.0.9.jar
Jetty Active XMLs:
------------------
${jetty.base}/etc/jetty-bytebufferpool.xml
${jetty.base}/etc/jetty-threadpool.xml
${jetty.base}/etc/jetty.xml
${jetty.base}/etc/jetty-webapp.xml
${jetty.base}/etc/jetty-deploy.xml
${jetty.base}/etc/jetty-http.xml
${jetty.base}/etc/jetty-ssl.xml
${jetty.base}/etc/jetty-ssl-context.xml
${jetty.base}/etc/jetty-https.xml
${jetty.base}/etc/jetty-rewrite.xml
${jetty.base}/etc/rewrite-rules.xml