maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Scholte (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MWAR-397) Replace XStream with Modello to merge overlays
Date Wed, 11 Jan 2017 16:11:00 GMT

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

Mime
View raw message