Trying to create JDK9 runtime image that includes only the necessary modules to run a JavaFX program called Scoreboard. It has been converted to a JDK9 module called Scoreboard and has dependencies on system modules as well as another module called com.jtconnors.socket. More details below, this program runs fine when invoked with jdk9-ea+155 as follows (Scoreboard.jar and com.jtconnors.socket.jar are in the current directory):

   C:\tmp\scratch>java --module-path . -m Scoreboard

However when attempting to create the jlink image as follows, this error message appears:

   C:\tmp\scratch>jlink --module-path .;\Users\jtconnor\jdk-9\jmods
   --add-modules S
   coreboard --output reducedImage --compress=2 --strip-debug
   Error: java.lang.RuntimeException: Module Scoreboard's descriptor
   returns incons
   istent package set

Here are step-by-step details, First thing shown here is what worked:

Example 1: create was a reduced Jdk9 runtime image that includes just the com.jtconnors.socket module with all it's dependencies. Here's what the module-info.java file for com.jtconnors.socket looks like:

   module com.jtconnors.socket {
        requires java.base;
        requires java.logging;
        exports com.jtconnors.socket;
        exports com.jtconnors.socket.test;
   }

Here's my PATH:

   C:\tmp\scratch>echo %PATH%
   
C:\users\jtconnor\jdk-9\bin;C:\ProgramData\Oracle\Java\javapath;D:\Oracle\jdk8\b
   
in;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\W
   indowsPowerShell\v1.0\;C:\Program
   Files\nodejs\;D:\Oracle\mysql-5.7.16-winx64\bi
   n\;C:\Users\jtconnor\jdk-9\bin;C:\Users\jtconnor\AppData\Roaming\npm

And here's what java -version says:

   C:\tmp\scratch>java -version
   java version "9-ea"
   Java(TM) SE Runtime Environment (build 9-ea+155)
   Java HotSpot(TM) 64-Bit Server VM (build 9-ea+155, mixed mode)

The com.jtconnors.socket.jar file is in the C:\tmp\scratch directory:

   C:\tmp\scratch>dir
     Volume in drive C has no label.
     Volume Serial Number is 5C29-8814

     Directory of C:\tmp\scratch

   02/08/2017  07:39 PM    <DIR>          .
   02/08/2017  07:39 PM    <DIR>          ..
   02/08/2017  07:03 PM            60,051 com.jtconnors.socket.jar
                   1 File(s)         60,051 bytes
                   2 Dir(s)  299,772,723,200 bytes free

jdeps output for com.jtconnors.socket:

   C:\tmp\scratch>jdeps -s com.jtconnors.socket.jar
   com.jtconnors.socket -> java.base
   com.jtconnors.socket -> java.logging

Created a runtime image as follows:

   C:\tmp\scratch>jlink --module-path .;\users\jtconnor\jdk-9\jmods
   --add-modules com.jtconnors.socket --output reducedImage
   --compress=2 --strip-debub

Run java -version with thereducedImage runtime

   C:\tmp\scratch>reducedImage\bin\java -version
   java version "9-ea"
   Java(TM) SE Runtime Environment (build 9-ea+155)
   Java HotSpot(TM) 64-Bit Server VM (build 9-ea+155, mixed mode)

List the modules in the reducedImage runtime:

   C:\tmp\scratch>reducedImage\bin\java --list-modules
   com.jtconnors.socket
   java.base@9-ea
   java.logging@9-ea

Run test program that comes with the com.jtconnors.socket module:
C:\tmp\scratch>reducedImage\bin\java -m com.jtconnors.socket/com.jtconnors.socke
t.test.SocketServerReceiver

   Feb 08, 2017 7:48:32 PM
   com.jtconnors.socket.test.SocketServerReceiver initSocke
   tConnection
   INFO: Waiting for connection

Example 2: Trying to create a jlink image for the Scoreboard application, this is where jlink produces a RuntimeException

Here's what Scoreboard's module-info.java file looks like:

   module Scoreboard {
        requires java.base;
        requires com.jtconnors.socket;
        requires java.logging;
        requires java.xml;
        requires javafx.base;
        requires javafx.controls;
        requires javafx.graphics;
        requires javafx.media;
        exports scoreboard.fx2;
   }

jdeps output for Scoreboard.jar:

   C:\tmp\scratch>jdeps --module-path . -s Scoreboard.jar
   Scoreboard -> com.jtconnors.socket
   Scoreboard -> java.base
   Scoreboard -> java.logging
   Scoreboard -> java.xml
   Scoreboard -> javafx.base
   Scoreboard -> javafx.controls
   Scoreboard -> javafx.graphics
   Scoreboard -> javafx.media

Attempted to create a runtime image as follows and got this output:

   C:\tmp\scratch>jlink --module-path .;\Users\jtconnor\jdk-9\jmods
   --add-modules S
   coreboard --output reducedImage --compress=2 --strip-debug
   Error: java.lang.RuntimeException: Module Scoreboard's descriptor
   returns incons
   istent package set

Reply via email to