[
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)