jpackage EA Build 0

Andy Herrick andy.herrick at oracle.com
Sun Dec 16 13:27:31 UTC 2018


On 12/15/2018 2:48 PM, Sverre Moe wrote:
> Den lør. 15. des. 2018 kl. 18:44 skrev Andy Herrick <andy.herrick at oracle.com>:
>>
>> On 12/15/2018 11:26 AM, Sverre Moe wrote:
>>
>> Some feedback from using this new JDK12 jpackage.
>>
>> I have yet to find out how to specify the bundle resources. It tells to put them on the class path, but that cannot be right, as jpackage is module.
>> Using default package resource [menu icon]  (add package/movies.png to the class path to customize)
>>
>> I meant to get back to you on this.  This is an incorrect warning message that needs to be fixed - I will file a bug.
>>
>> All resources for the app should be specified by combination of --input, --files, and --module-path
> Would be helpful to see some examples how to combine these to specify
> the package resources, as a part of the help output.
> Tried
>          '--input', "${buildDir}/deploy/package",
>          '--files', 'movies.png',
>          '--module-path', "${buildDir}/deploy/package",
>
>
>> Why is --icon the only bundle argument that can be set on jpackage?
>> Using custom package resource [menu icon]  (loaded from file /home/sverre/workspace/movies/src/main/deploy/package/linux/movies.png)
>>
>> not sure I understand this.
> The menu icon for package resource can be set by either --icon or the
> resource package/app.png. What I meant is there is no CLI argument for
> the other package resources like "Menu shortcut descriptor", "RPM spec
> file". Then why only have argument for icon.
>
>> The project I am trying this on is a fully modularized JavaFX application.
>>      task createInstaller(type: Exec) {
>>          dependsOn createRuntime
>>          dependsOn installDist
>>
>>          commandLine '/usr/java/jdk-12/bin/jpackage', 'create-installer',
>>              '--verbose',
>>              '--name', project.name,
>>              '--description', project.description,
>>              '--vendor', "Smeaworks Inc",
>>              '--install-dir', "/opt/smeaworks",
>>              '--category', "Some/Category/Application",
>>              '--module-path', new File(installDist.outputs.files.singleFile, "lib"),
>>              '--module', "${mainClassName}",
>>              '--runtime-image', ""${buildDir}/runtime
>>              '--output', "$buildDir/jfx/native"
>>      }
>>
>> the latest build contains bug JDK-8213392, which prevents using --module-path and --runtime-image together (see https://bugs.openjdk.java.net/browse/JDK-8213962)
> I did not get any problems with using both --module-path and
> --runtime-image with jpackage.

The result of JDK-8213392 was not that there was any problem creating 
the package, but that the packaged app would not run, because the 
modules from the --module-path arg are never included in the packaged 
app, or referenced in the vm args used when launching java.

It is not clear to me what  - new 
File(installDist.outputs.files.singleFile, "lib") - actually is. Is this 
already in the runtime you created (if so you do you need this line ?) 
(if not , 8213392 will prevent it from being included in your app.)

>
>> but it would still be advisable to run jlink first from the original runtime image with the desired module path. to get a minimal runtime image for your app.
> I didn't quite understand what you meant with this.
> I did run jlink first to create a Java 11 runtime image which I used
> with jpackager.
>      task createRuntime(type: Exec) {
>          dependsOn installDist
>
>          doFirst {
>              delete "${buildDir}/runtime"
>          }
>
>          def libDir = new File(installDist.outputs.files.singleFile, "lib").path
>
>          commandLine 'jlink',
>              '--module-path', "/usr/java/jdk-11/jmods:${libDir}",
>              '--add-modules', 'no.smeaworks.movies',
>              '--output', "${buildDir}/runtime"
>      }

which jlink are you running here  /usr/java/jdk-11/bin/jlink or 
/usr/java/jdk-12/bin/jlink ?

in the first case you really are creating a Java 11 runtime with FX, in 
the second case you are creating a Java 12 runtime with FX from JDK-11

(assuming FX is what is in "/usr/java/jdk-11/jmods:${libDir}")


/Andy



More information about the core-libs-dev mailing list