[
https://issues.apache.org/jira/browse/JOHNZON-347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17563235#comment-17563235
]
Andreas Wiesinger edited comment on JOHNZON-347 at 7/6/22 1:37 PM:
-------------------------------------------------------------------
Yes, our Johnzon Mapper is set to 1.2.18.
However, the error message is slightly different as in this ticket:
{code:java}
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field
private byte[] javax.smartcardio.CommandAPDU.apdu accessible: module
java.smartcardio does not "opens javax.smartcardio" to unnamed module @...
at
java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
~[?:?]
at
java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
~[?:?]
at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?]
at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?]
at
org.apache.johnzon.mapper.access.FieldAccessMode$FieldDecoratedType.<init>(FieldAccessMode.java:110)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.FieldAccessMode$FieldReader.<init>(FieldAccessMode.java:174)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.FieldAccessMode.doFindReaders(FieldAccessMode.java:50)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.BaseAccessMode.findReaders(BaseAccessMode.java:82)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.FieldAndMethodAccessMode.doFindReaders(FieldAndMethodAccessMode.java:78)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.BaseAccessMode.findReaders(BaseAccessMode.java:82)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.jsonb.JsonbAccessMode.findReaders(JsonbAccessMode.java:501)
~[johnzon-jsonb-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.KnownNotOpenedJavaTypesAccessMode.findReaders(KnownNotOpenedJavaTypesAccessMode.java:182)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mappings.createClassMapping(Mappings.java:478)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mappings.doFindOrCreateClassMapping(Mappings.java:439)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mappings.findOrCreateClassMapping(Mappings.java:413)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.doWriteObjectBody(MappingGeneratorImpl.java:351)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.writeValue(MappingGeneratorImpl.java:515)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.doWriteObjectBody(MappingGeneratorImpl.java:407)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.doWriteObject(MappingGeneratorImpl.java:197)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:207)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mapper.writeObjectWithGenerator(Mapper.java:192)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:186)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:201)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.jsonb.JohnzonJsonb.toJson(JohnzonJsonb.java:396)
~[johnzon-jsonb-1.2.18.jar:1.2.18]
at
org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider.writeTo(JsonbJaxrsProvider.java:277)
~[johnzon-jsonb-1.2.18.jar:1.2.18]
{code}
We use {{javax.smartcardio.CommandAPDU}} from the OpenJDK 18.
There we simply call a {{return new CommandAPDU(rawApdu);}} inside a getter
method.
This leads to the error above.
Tried to add {{--add-opens java.base/java.lang=ALL-UNNAMED}} to the
corresponding {{pom.xml}} with no luck.
Tried to add {{@JohnzonIgnore}} to this method with no luck.
was (Author: JIRAUSER284786):
Yes, our Johnzon Mapper is set to 1.2.18.
However, the error message is slightly different as in this ticket:
{code:java}
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field
private byte[] javax.smartcardio.CommandAPDU.apdu accessible: module
java.smartcardio does not "opens javax.smartcardio" to unnamed module @...
at
java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
~[?:?]
at
java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
~[?:?]
at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?]
at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?]
at
org.apache.johnzon.mapper.access.FieldAccessMode$FieldDecoratedType.<init>(FieldAccessMode.java:110)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.FieldAccessMode$FieldReader.<init>(FieldAccessMode.java:174)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.FieldAccessMode.doFindReaders(FieldAccessMode.java:50)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.BaseAccessMode.findReaders(BaseAccessMode.java:82)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.FieldAndMethodAccessMode.doFindReaders(FieldAndMethodAccessMode.java:78)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.BaseAccessMode.findReaders(BaseAccessMode.java:82)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.jsonb.JsonbAccessMode.findReaders(JsonbAccessMode.java:501)
~[johnzon-jsonb-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.access.KnownNotOpenedJavaTypesAccessMode.findReaders(KnownNotOpenedJavaTypesAccessMode.java:182)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mappings.createClassMapping(Mappings.java:478)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mappings.doFindOrCreateClassMapping(Mappings.java:439)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mappings.findOrCreateClassMapping(Mappings.java:413)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.doWriteObjectBody(MappingGeneratorImpl.java:351)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.writeValue(MappingGeneratorImpl.java:515)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.doWriteObjectBody(MappingGeneratorImpl.java:407)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.MappingGeneratorImpl.doWriteObject(MappingGeneratorImpl.java:197)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:207)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at
org.apache.johnzon.mapper.Mapper.writeObjectWithGenerator(Mapper.java:192)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:186)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:201)
~[johnzon-mapper-1.2.18.jar:1.2.18]
at org.apache.johnzon.jsonb.JohnzonJsonb.toJson(JohnzonJsonb.java:396)
~[johnzon-jsonb-1.2.18.jar:1.2.18]
at
org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider.writeTo(JsonbJaxrsProvider.java:277)
~[johnzon-jsonb-1.2.18.jar:1.2.18]
{code}
We use {{javax.smartcardio.CommandAPDU}} from the OpenJDK 18.
There we simply call a {{return new CommandAPDU(rawApdu);} inside a getter
method.
This leads to the error above.
Tried to add {{--add-opens java.base/java.lang=ALL-UNNAMED}} to the
corresponding {{pom.xml}} with no luck.
Tried to add {{@JohnzonIgnore}} to this method with no luck.
> Mapper.write(Array|Object)() fails on JDK 17
> --------------------------------------------
>
> Key: JOHNZON-347
> URL: https://issues.apache.org/jira/browse/JOHNZON-347
> Project: Johnzon
> Issue Type: Bug
> Components: Mapper
> Affects Versions: 1.2.13
> Reporter: Christoph Dreis
> Priority: Critical
> Attachments: diff-jsonpointer.git.patch
>
>
> Hi,
> I've noticed that Mapper.writeArray fails on JDK 17 due to
> [https://openjdk.java.net/jeps/403] strongly encapsulating internals now. To
> reproduce just run `JohnzonJsonbTest` with JDK 17 (build 25 at least to
> include JEP 403). You will see stacktraces like the following:
> ```
> java.lang.reflect.InaccessibleObjectException: Unable to make field private
> final java.lang.Object[] java.util.Arrays$ArrayList.a accessible: module
> java.base does not "opens java.util" to unnamed module
> @4361bd48java.lang.reflect.InaccessibleObjectException: Unable to make field
> private final java.lang.Object[] java.util.Arrays$ArrayList.a accessible:
> module java.base does not "opens java.util" to unnamed module @4361bd48
> at
> java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
> at
> java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
> at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
> at java.base/java.lang.reflect.Field.setAccessible(Field.java:172) at
> org.apache.johnzon.mapper.access.FieldAccessMode$FieldDecoratedType.<init>(FieldAccessMode.java:105)
> at
> org.apache.johnzon.mapper.access.FieldAccessMode$FieldReader.<init>(FieldAccessMode.java:169)
> at
> org.apache.johnzon.mapper.access.FieldAccessMode.doFindReaders(FieldAccessMode.java:49)
> at
> org.apache.johnzon.mapper.access.BaseAccessMode.findReaders(BaseAccessMode.java:82)
> at
> org.apache.johnzon.mapper.access.FieldAndMethodAccessMode.doFindReaders(FieldAndMethodAccessMode.java:68)
> at
> org.apache.johnzon.mapper.access.BaseAccessMode.findReaders(BaseAccessMode.java:82)
> at
> org.apache.johnzon.jsonb.JsonbAccessMode.findReaders(JsonbAccessMode.java:468)
> at
> org.apache.johnzon.mapper.access.KnownNotOpenedJavaTypesAccessMode.findReaders(KnownNotOpenedJavaTypesAccessMode.java:182)
> at org.apache.johnzon.mapper.Mappings.createClassMapping(Mappings.java:475)
> at
> org.apache.johnzon.mapper.Mappings.doFindOrCreateClassMapping(Mappings.java:437)
> at
> org.apache.johnzon.mapper.Mappings.findOrCreateClassMapping(Mappings.java:411)
> at org.apache.johnzon.mapper.Mapper.isDeduplicateObjects(Mapper.java:202) at
> org.apache.johnzon.mapper.Mapper.writeObjectWithGenerator(Mapper.java:196) at
> org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:189) at
> org.apache.johnzon.mapper.Mapper.writeObject(Mapper.java:217) at
> org.apache.johnzon.mapper.Mapper.writeArray(Mapper.java:104) at
> org.apache.johnzon.jsonb.JohnzonJsonb.toJson(JohnzonJsonb.java:390)
> ```
> I didn't find a quick way to fix this, but let me know if I can help.
>
> Cheers,
> Christoph
--
This message was sent by Atlassian Jira
(v8.20.10#820010)