Gradle not working on Jigsaw

Kevin Rushforth kevin.rushforth at oracle.com
Thu Oct 20 14:51:42 UTC 2016


I realized after reading Alan's email more closely that an important 
difference between his usage and my test yesterday is that he used 
_JAVA_OPTIONS whereas I was trying it with just JAVA_OPTS (the latter is 
recognized and used by gradle, but the former applies to all exec'ed 
java/javac commands even if gradle doesn't pass them along).

Starting with the following:

export _JAVA_OPTIONS="-Dsun.reflect.debugModuleAccessChecks=true 
--add-exports-private=java.base/java.lang=ALL-UNNAMED 
--add-exports-private=java.base/java.util=ALL-UNNAMED"

I was then able to see the other IllegalAccessExceptions and get much 
farther in my build. I ended up needing all of these:

export _JAVA_OPTIONS="-Dsun.reflect.debugModuleAccessChecks=true 
--add-exports-private=java.base/java.lang=ALL-UNNAMED 
--add-exports-private=java.base/java.util=ALL-UNNAMED 
--add-exports-private=java.base/java.lang.invoke=ALL-UNNAMED 
--add-exports-private=java.base/java.io=ALL-UNNAMED 
--add-exports-private=java.base/java.util.concurrent=ALL-UNNAMED 
--add-exports-private=java.base/java.text=ALL-UNNAMED

That was enough to get past compiling buildSrc and start compiling the 
javafx.* modules.

I then ran into an unrelated compilation error that I can reproduce 
outside of gradle.

-- Kevin



Jochen Theodorou wrote:
>
>
> On 20.10.2016 10:19, Alan Bateman wrote:
> [...]
>> The latest
>> proposal in the JSR is an attempt to address that issue but it does
>> impact code that uses setAccessible to get at non-public types/members
>> in java.* classes.
>
> I still wish you had at least not included protected members. Sure, 
> protected is not public and protected is always a pain in the butt, I 
> still fail to comprehend the logic that a class can extend a class 
> from another module and then use the protected methods of the super 
> class, but setAccessible is not allowed to be used to gain access to 
> it from anywhere but that same class.
>
> [...]
>> Is the Gradle forum the best place to follow-up on these issues? (I
>> can't tell from Stephen's mail if it's Gradle or Groovy here).
>
> could be Groovy 2.4.7, that kind of error is fixed in  2.4.8... once 
> it is released, which we are currently working on. Because 2.4.7 
> assumes either all of the class can be made accessible or none. And 
> that is not true with #AwkwardStrongEncapsulation anymore. Which also 
> means meta class creation will take a lot longer, since we now cannot 
> use the array-taking setAccessible method in all cases anymore. Would 
> have been nice to have a version of setAccessible that just makes 
> accessible what is allowed and maybe reports back for those that are 
> not allowed.
>
> As for discussion about Gradle with #AwkwardStrongEncapsulation I have 
> not seen any public discussion about this at gradle yet.
>
> bye Jochen


More information about the jigsaw-dev mailing list