jpackage does not include extra files from app-image when creating Debian package?

Tobias Oelgarte tobias.oelgarte at gmail.com
Sat Feb 27 07:31:30 UTC 2021


> Sorry for misleading you. Please use 
> https://bugreport.java.com/bugreport/ tool to file a bug (Component: 
> "Tools issues", Subcomponent: "jpackage"). 
I filed a bug report. It's awaiting review to be accepted.

> No, there is no platform independent and reliable way to get the path 
> to 'app' directory. However you can get location of one of your app's 
> classes through Class.getResource(). See 
> https://stackoverflow.com/questions/227486/find-where-java-class-is-loaded-from
That isn't helpful at all. All i get is either the URL jrt:/<modulename> 
or null, but not the installation directory or something similar.

On 26.02.21 23:03, Alexey Semenyuk wrote:
>
>
> On 2/26/2021 2:39 PM, Tobias Oelgarte wrote:
>> No luck. If i put my files in 'target/image/AppName/app/' subfolder 
>> they are not included in the .deb file. The entire app folder is 
>> missing (even from the jpackage installer --temp directory). If i put 
>> them in 'target/image/AppName/bin/' they are included and also 
>> installed.
> Looks like a bug in jpackage.
>
>>
>> I can't file a bug report in JIRA. I would if I could, but I have no 
>> access to it.
> Sorry for misleading you. Please use 
> https://bugreport.java.com/bugreport/ tool to file a bug (Component: 
> "Tools issues", Subcomponent: "jpackage").
>
>>
>> BTW is there any reliable way to figure out the path of the 'app/' 
>> directory after it has been installed from within the running 
>> application? In JDK 14 (Windows) I got the system property 
>> 'java.launcher.path', but under JDK 16 (Ubuntu 18.04) this property 
>> is missing and instead I found 'jpackage.app-path' which points to 
>> the binary inside 'bin/'.
> No, there is no platform independent and reliable way to get the path 
> to 'app' directory. However you can get location of one of your app's 
> classes through Class.getResource(). See 
> https://stackoverflow.com/questions/227486/find-where-java-class-is-loaded-from
>
> - Alexey
>
>>
>> On 26.02.21 18:25, Alexey Semenyuk wrote:
>>> Tobias,
>>>
>>> If you put your files in 'target/image/AppName/app/' subfolder and 
>>> they are missing in .deb file it is a bug in jpackage. Please go 
>>> ahead and file a bug in JIRA. We will work of the fix.
>>>
>>> - Alexey
>>>
>>> On 2/26/2021 12:05 PM, Tobias Oelgarte wrote:
>>>> I tried JDK 14.0.2 and JDK 16 Build 36. I let Maven put my extra 
>>>> files into '/target/image/AppName/*/' and i also tried to put them 
>>>> into 'target/image/AppName/app/*' but nothing worked. It works 
>>>> perfectly for 'msi' at all places under AppName, but not for 'deb'.
>>>>
>>>> After some trial an error I added the files to 
>>>> "target/image/AppName/bin/*" and surprisingly this worked. But this 
>>>> is not really what I expected. At least the path relative to the 
>>>> binary stays the same. Maybe it was intended that way?
>>>>
>>>> On 26.02.21 17:42, Alexey Semenyuk wrote:
>>>>
>>>>> Hi Tobias,
>>>>>
>>>>> Extra files in deb packaging should work. What is the version of 
>>>>> jpackage you are using? Where do you put extra files in app image? 
>>>>> If you put them in the root directory of app image they will not 
>>>>> be included in the package. Recommended location for extra files 
>>>>> is "app" subdirectory of app image.
>>>>>
>>>>> - Alexey
>>>>>
>>>>> On 2/26/2021 10:58 AM, Tobias Oelgarte wrote:
>>>>>> I'm creating an app image with the following commands*:
>>>>>>
>>>>>>   jlink --output runtime --module-path [..] --add-modules [..] 
>>>>>> --bind-services
>>>>>>   jpackage --type app-image --dest image --module [..] 
>>>>>> --runtime-image runtime --name Name
>>>>>>
>>>>>> Now i copy some extra files to the resulting image, which are 
>>>>>> needed during program execution.
>>>>>>
>>>>>> After that i can create an MSI installer with the following 
>>>>>> command*:
>>>>>>
>>>>>>   jpackage --type msi --dest installer --app-image image --name Name
>>>>>>
>>>>>> As the result I get an installer which also includes the extra 
>>>>>> files which I added to the app-image an the extra files are 
>>>>>> installed along with the rest of the image.
>>>>>>
>>>>>> But if i do the same, creating a Debian installer package (deb), 
>>>>>> then the extra files are not included.
>>>>>>
>>>>>>   jpackage --type deb --dest installer --app-image image --name Name
>>>>>>
>>>>>> The resulting deb installs just fine, but the files are not 
>>>>>> included in the deb archive and are obviously not written to the 
>>>>>> installation directory.
>>>>>>
>>>>>> Did I miss something, or is this not possible when creating an 
>>>>>> Debian package?
>>>>>>
>>>>>> * I removed some trivial parameters like --vendor, --copyright, 
>>>>>> --resource-dir, e.t.c. to keep the commandlines short
>>>>>>
>>>>>
>>>
>


More information about the jdk-dev mailing list