JDK9 and Gradle modular quickstart

Kevin Rushforth kevin.rushforth at oracle.com
Thu Aug 25 16:03:51 UTC 2016


I can't comment on Dave's intentions to put more effort into the 
quickstart project for its own sake, since it was done as a simple 
starting point for work we need to do to modify JavaFX to build with a 
Jigsaw-capable JDK 9.

I can say that as Dave folds this into the JavaFX build, he will do so 
in our 9-jake sandbox, so you will be able to follow the progress here:

http://hg.openjdk.java.net/openjfx/sandbox-9-jake/rt

-- Kevin



Malachi de Ælfweald wrote:
> Hi David,
>
> Thank you for sharing this.
>
> A couple thoughts -
>
>    - you might consider posting it in a repo as opposed to a zip so we can
>    follow changes (bitbucket, kenai, whatever)
>    - adding an .hgignore
>    - reading the note at the top of your build.gradle, this comment caught
>    my attention "*Note that the test packages cannot overlap with your
>    module packages.*" I think that one is really important as it would
>    indicate that there might be difficulties doing Android Flavors moving
>    forward.
>    - on your build.gradle, you have '4.+' - it is no longer recommended to
>    use the + and the IDEs will throw warnings about it (also JUnit 5 is
>    available)
>    - instead of having a single build.gradle with 3 different compile
>    tasks; why did you not make it 3 separate modules (each with their own
>    compile task)?
>
> When I ran `./gradlew build` it failed because it could not find
> org.dave.Person:
>
> test.org.dave.PersonTest > canConstructAPersonWithAName FAILED
>     java.lang.NoClassDefFoundError at PersonTest.java:11
>         Caused by: java.lang.ClassNotFoundException at PersonTest.java:11
>
> Per your README, I tried setting export _JAVA_OPTIONS="--add-exports
> dave/org.dave.internal=ALL-UNNAMED"
>
> and re-running the build; which resulted in:
>
> Unrecognized option: --add-exports
> Error: Could not create the Java Virtual Machine.
> Error: A fatal exception has occurred. Program will exit.
>
>
> Looking at my previous _JAVA_OPTIONS, I tried export
> _JAVA_OPTIONS="--add-exports=dave/org.dave.internal=ALL-UNNAMED"
>
> and re-running the build; which resulted in:
>
> Error occurred during initialization of VM
> java.lang.RuntimeException: Unknown module: dave
>     at jdk.internal.module.ModuleBootstrap.fail(java.base at 9-ea
> /ModuleBootstrap.java:543)
>     at jdk.internal.module.ModuleBootstrap.addExtraExports(java.base at 9-ea
> /ModuleBootstrap.java:457)
>     at jdk.internal.module.ModuleBootstrap.boot(java.base at 9-ea
> /ModuleBootstrap.java:322)
>     at java.lang.System.initPhase2(java.base at 9-ea/System.java:1925)
>
>
> Any thoughts?
>
>
>
> Malachi de Ælfweald
> http://www.google.com/profiles/malachid
>
> On Thu, Aug 25, 2016 at 6:19 AM, David Hill <David.Hill at oracle.com> wrote:
>
>   
>> Hi,
>>    I mentioned I was working on a modular compilation with Gradle 3 and
>> JDK9. I have something to share now :-)
>>
>> This adapted quickstart comprises a "module" of two classes, a test class,
>> and a "shim" test class. (The shim is an adapter used for 'white box' style
>> tests).
>>
>>    http://cr.openjdk.java.net/~ddhill/module-quickstart.zip
>>
>> The first half of the build.gradle is a README that explains a lot of my
>> design constraints, and choices.
>>
>> Gradle is really good at making the simple cases ... simple. Clearly they
>> have a bit more to go to handle modules natively, but as my quickstart
>> shows, it can be done now without too much extra effort.
>>
>> I would be interested in any comments or suggestions on how I have solved
>> this task. I plan on folding what I have found into the OpenJFX build.
>>
>> Dave
>>
>>
>> --
>> David Hill<David.Hill at Oracle.com>
>> Java Embedded Development
>>
>> "A man's feet should be planted in his country, but his eyes should survey
>> the world."
>> -- George Santayana (1863 - 1952)
>>
>>
>>     


More information about the jigsaw-dev mailing list