groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Sun (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (GROOVY-8339) Fix warning "An illegal reflective access operation has occurred"
Date Sat, 13 Apr 2019 17:52:00 GMT

    [ https://issues.apache.org/jira/browse/GROOVY-8339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16817017#comment-16817017
] 

Daniel Sun edited comment on GROOVY-8339 at 4/13/19 5:51 PM:
-------------------------------------------------------------

>From now on, the proposed PR( [https://github.com/apache/groovy/pull/905] ) can fix most
of unnecessary illegal access warnings, here is the build result of Apache Groovy project:
[https://travis-ci.org/apache/groovy/jobs/519678165]

As you can see, there are still illegal access warnings in the build result because of the
following reasons I've found:
 ① The code truely accesses members illegally(account for the vast majority of the warnings
in the build result), e.g.
https://github.com/apache/groovy/blob/master/src/test/groovy/PrimitiveTypesTest.groovy#L88
{code:java}
// groovy code
BigInteger big = new BigInteger(Long.MAX_VALUE)  // the constructor is private
{code}
*Solution:* we have to fix them by change our code to avoid illegal access

② Sub-class derives the public members from package-private class, but invoke the members
on the sub class instances, e.g.
https://github.com/apache/groovy/blob/master/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Groovysh.groovy#L532
{code:java}
// groovy code
// the declaring class of method `setLength` is `AbstractStringBuilder`(i.e. the base class
of `StringBuilder`)
// but `AbstractStringBuilder` is package-private
buff.setLength(0) // buff is a `StringBuilder` instance
{code}
*Solution:* Groovy should be smarter to be able to choose the derived method, e.g. {{StringBuilder::setLength}}

As for ②, I wish [~blackdrag] could give us some hints to make progress faster ;)


was (Author: daniel_sun):
>From now on, the proposed PR( https://github.com/apache/groovy/pull/905 ) can fix most
of unnecessary illegal access warnings, here is the build result of Apache Groovy project:
https://travis-ci.org/apache/groovy/jobs/519678165

As you can see, there are still illegal access warnings in the build result because of the
following reasons I've found:
① The code truely accesses members illegally(account for the vast majority of the warnings
in the build result), e.g.
{code:java}
// groovy code
// See https://github.com/apache/groovy/blob/master/src/test/groovy/PrimitiveTypesTest.groovy#L88
BigInteger big = new BigInteger(Long.MAX_VALUE)  // the constructor is private
{code}
*Solution:* we have to fix them by change our code to avoid illegal access

② Sub-class derives the public members from package-private class, but invoke the members
on the sub class instances, e.g. 
{code:java}
// groovy code
// See https://github.com/apache/groovy/blob/master/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Groovysh.groovy#L532
// the declaring class of method `setLength` is `AbstractStringBuilder`(i.e. the base class
of `StringBuilder`)
// but `AbstractStringBuilder` is package-private
buff.setLength(0) // buff is a `StringBuilder` instance
{code}
*Solution:* Groovy should be smarter to be able to choose the derived method, e.g. {{StringBuilder::setLength}}

As for ②, I wish [~blackdrag] could give us some hints to make progress faster ;-)





> Fix warning "An illegal reflective access operation has occurred"
> -----------------------------------------------------------------
>
>                 Key: GROOVY-8339
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8339
>             Project: Groovy
>          Issue Type: Improvement
>          Components: groovy-jdk
>    Affects Versions: 2.4.11, 2.4.15
>         Environment: >gradle --version
> Gradle 4.2
> Build time:   2017-09-20 14:48:23 UTC
> Revision:     5ba503cc17748671c83ce35d7da1cffd6e24dfbd
> Groovy:       2.4.11
> Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
> JVM:          9 (Oracle Corporation 9+181)
> OS:           Windows 10 10.0 amd64
>            Reporter: Benjamin Roedell
>            Priority: Major
>              Labels: security
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> I'm running JDK-9 on Windows 10 with Gradle 4.2.
> My global gradle.properties file contains the following line:
> org.gradle.java.home=C:/Program Files/Java/jdk-9
> When I request the gradle version (gradle --version) I get the following warning:
> {code:none}
> WARNING: An illegal reflective access operation has occurred
> WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/C:/Program%20Files/gradle-4.2/lib/groovy-all-2.4.11.jar)
to method java.lang.Object.finalize()
> WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
> WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access
operations
> WARNING: All illegal access operations will be denied in a future release
> {code}
> This warning displayed regardless of whether I'm using a regular command prompt or an
elevated rights (Administrator) command prompt.
> Here's the full command and output:
> {code:none}
> gradle --version
> WARNING: An illegal reflective access operation has occurred
> WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/C:/Program%20Files/gradle-4.2/lib/groovy-all-2.4.11.jar)
to method java.lang.Object.finalize()
> WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
> WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access
operations
> WARNING: All illegal access operations will be denied in a future release
> ------------------------------------------------------------
> Gradle 4.2
> ------------------------------------------------------------
> Build time:   2017-09-20 14:48:23 UTC
> Revision:     5ba503cc17748671c83ce35d7da1cffd6e24dfbd
> Groovy:       2.4.11
> Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
> JVM:          9 (Oracle Corporation 9+181)
> OS:           Windows 10 10.0 amd64
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message