[ https://issues.apache.org/jira/browse/MWAR-397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15818728#comment-15818728 ]
Robert Scholte commented on MWAR-397: ------------------------------------- I'd hoped is was simple to switch, but the {{org.apache.maven.plugins.war.util.WebappStructure}} is more than a simple pojo, so it requires a full rewrite with separation of concerns. > Replace XStream with Modello to merge overlays > ---------------------------------------------- > > Key: MWAR-397 > URL: https://issues.apache.org/jira/browse/MWAR-397 > Project: Maven WAR Plugin > Issue Type: Improvement > Reporter: Robert Scholte > > When packaging a war with most recent jigsaw-jdk9-ea releases you will get > the following exception: > {noformat} > Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make > field private final java.util.Comparator java.util.TreeMap.comparator > accessible: module java.base does not "exports private java.util" to unnamed > module @17088b23 > at jdk.internal.reflect.Reflection.throwInaccessibleObjectException > (Reflection.java:414) > at java.lang.reflect.AccessibleObject.checkCanSetAccessible > (AccessibleObject.java:198) > at java.lang.reflect.Field.checkCanSetAccessible (Field.java:171) > at java.lang.reflect.Field.setAccessible (Field.java:165) > at com.thoughtworks.xstream.core.util.Fields.locate (Fields.java:40) > at > com.thoughtworks.xstream.converters.collections.TreeMapConverter.<clinit> > (TreeMapConverter.java:50) > at com.thoughtworks.xstream.XStream.setupConverters (XStream.java:832) > at com.thoughtworks.xstream.XStream.<init> (XStream.java:574) > at com.thoughtworks.xstream.XStream.<init> (XStream.java:496) > at com.thoughtworks.xstream.XStream.<init> (XStream.java:465) > at com.thoughtworks.xstream.XStream.<init> (XStream.java:411) > at com.thoughtworks.xstream.XStream.<init> (XStream.java:378) > at org.apache.maven.plugins.war.util.WebappStructureSerializer.<clinit> > (WebappStructureSerializer.java:47) > {noformat} > Root cause is the change is the > [jigsaw-jdk-9-ea+135|http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-September/009404.html] > {quote} > The changes to setAccessible in #AwkwardStrongEncapsulation is going to > be disruptive and will no doubt expose hacks in many areas. We've run > into several of these already. The command line option to allow existing > code to break into non-public types/members is --add-exports-private. > The format of the value passed to this option is the same--add-exports. > With #AddExportsInManifest then there are equivalents in the application > JAR main manifest to try out too. > {quote} > The stacktrace exposes that the issue is caused by XStream. It seems that > XStream is used to be able to merge overlays. Maven and most other plugins > use Modello for these kind of things. > There's still a lot of discussion about #ReflectiveAccessToNonExportedTypes > and #AwkwardStrongEncapsulation and but I think we can avoid this issue by > simply switching to the well known Modello solution. -- This message was sent by Atlassian JIRA (v6.3.4#6332)