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

Tobias Oelgarte tobias.oelgarte at
Sat Feb 27 11:51:05 UTC 2021

On 27.02.21 11:22, Michael Hall wrote:
>> On Feb 27, 2021, at 1:31 AM, Tobias Oelgarte <tobias.oelgarte at> wrote:
>>> 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 <>
>> 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.
> System property? java.home, java.launcher.path, java.library.path, java.class.path
> My application indicates a security policy…
> Which actually gets you into the app directory.
> On virtual box Windows showing...
> C:\Program Files\HalfPipe\app/all.policy

java.home points to the runtime directory, which is fine, but it is 
placed differently on Windows and Linux. In Windows it is 
'AppName/runtime' with app directory 'AppName/app' and under Linux it is 
'AppName/lib/runtime' with app directory 'AppName/app'. So i have to 
query the operating system first, before deciding where the 'app' 
directory would be. Additionally i can't create a *.deb including the 
app folder, because jpackage fails to include the app directory.

java.launcher.path is not available under Linux with JDK 16. Instead i 
would have to use

java.library.path is a list of paths pointing outside of the application 
directory. For example: 

java.class.path is empty in case of a modular application.

Using a security policy file is also an awkward way, to only get the app 
directory. But at least it is doable.

More information about the jdk-dev mailing list