jlink RuntimeException: descriptor returns inconsistent package set
    Jim Connors 
    james.connors at oracle.com
       
    Thu Feb  9 18:42:54 UTC 2017
    
    
  
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 at 9-ea
    java.logging at 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
    
    
More information about the jigsaw-dev
mailing list