Jpackage using maven failed with Akman/jpackage-maven-plugin: Unable to resolve project dependencies: Cannot run program "/usr/bin/bin/java"
I am trying to use jpackage command to generate native installers in maven for Windows, Linux and Mac using Akman/jpackage-maven-plugin.
Link to jpackage maven plugin: https://github.com/Akman/jpackage-maven-plugin (it requires min. version of Maven 3.8.6)
JDK/JRE I am using is Bellsoft LIberica JDK 17.0.6+10 and JRE 17.0.6+10 https://bell-sw.com/pages/downloads/.
IDE: IntelliJ IDEA 2022.3 (Community Edition)
Maven version: 3.9.0
The operating system I am on is Kubuntu 22.10
jpackage-maven-plugin configuration:
<plugin>
<groupId>com.github.akman</groupId>
<artifactId>jpackage-maven-plugin</artifactId>
<version>0.1.5</version>
<configuration>
<appversion>${project.version}</appversion>
<input>${jpackageInputDir}</input>
<mainjar>${buildDirectory}/mainjar.jar</mainjar>
<mainclass>${mainClass}</mainclass>
<icon>${project.basedir}/books256.ico</icon>
<name>${fn}</name>
<dest>${jpackageOutputDir}</dest>
</configuration>
<executions>
<execution>
<id>jpackagedeblinux</id>
<phase>package</phase>
<goals>
<goal>jpackage</goal>
</goals>
<configuration>
<linuxshortcut>true</linuxshortcut>
<type>DEB</type>
<toolhome>${jpackageJdkDirLinux}</toolhome>
<runtimeimage>${jpackageJreDirLinux}</runtimeimage>
</configuration>
</execution>
<execution>
<id>jpackagewinmsi</id>
<phase>package</phase>
<goals>
<goal>jpackage</goal>
</goals>
<configuration>
<type>MSI</type>
<toolhome>${jpackageJdkDirWin}</toolhome>
<runtimeimage>${jpackageJreDirWin}</runtimeimage>
</configuration>
</execution>
<execution>
<id>jpackagepkgmac</id>
<phase>package</phase>
<goals>
<goal>jpackage</goal>
</goals>
<configuration>
<type>PKG</type>
<toolhome>${jpackageJdkDirMac}</toolhome>
<runtimeimage>${jpackageJreDirMac}</runtimeimage>
</configuration>
</execution>
</executions>
</plugin>
Note: removing <toolHome>
(Path to jdk - actual jdk tools used. If not present, default is used.) and/or <runtimeImage>
(jre to be copied to resulting installer) parameters does not make a change.
Properties:
<properties>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.sourceEncoding>UTF-8
</project.reporting.sourceEncoding>
<fn>mainjar</fn>
<mainClass>core.Main</mainClass>
<buildDirectory>${project.basedir}/target</buildDirectory>
<jpackageInputDir>${buildDirectory}/jpackage_inputdir</jpackageInputDir>
<jpackageOutputDir>${buildDirectory}/jpackage_outputdir</jpackageOutputDir>
<jpackageJreDir>${buildDirectory}/jpackage</jpackageJreDir>
<jpackageJreDirMac>${jpackageJreDir}/mac</jpackageJreDirMac>
<jpackageJreDirWin>${jpackageJreDir}/win</jpackageJreDirWin>
<jpackageJreDirLinux>${jpackageJreDir}/linux</jpackageJreDirLinux>
<jpackageJdkDirMac>${jpackageJreDir}/jdk-mac</jpackageJdkDirMac>
<jpackageJdkDirWin>${jpackageJreDir}/jdk-win</jpackageJdkDirWin>
<jpackageJdkDirLinux>${jpackageJreDir}/jdk-linux</jpackageJdkDirLinux>
</properties>
Note: all jres/jdks are present in their respective folders.
The error I get during jpackage goal (full stack trace):
[ERROR] Failed to execute goal com.github.akman:jpackage-maven-plugin:0.1.5:jpackage (jpackage deb linux) on project desktop.mainapp: Error: Unable to resolve project dependencies: Cannot run program "/usr/bin/bin/java" (in directory "/tmp/plexus-java_jpms-17951190539128822429"): error=2, No such file or directory -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.akman:jpackage-maven-plugin:0.1.5:jpackage (jpackage deb linux) on project desktop.mainapp: Error: Unable to resolve project dependencies
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:347)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error: Unable to resolve project dependencies
at ru.akman.maven.plugins.jpackage.JPackageMojo.resolveDependencies (JPackageMojo.java:1330)
at ru.akman.maven.plugins.jpackage.JPackageMojo.execute (JPackageMojo.java:1875)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:342)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
Caused by: java.io.IOException: Cannot run program "/usr/bin/bin/java" (in directory "/tmp/plexus-java_jpms-17951190539128822429"): error=2, No such file or directory
at java.lang.ProcessBuilder.start (ProcessBuilder.java:1143)
at java.lang.ProcessBuilder.start (ProcessBuilder.java:1073)
at org.codehaus.plexus.languages.java.jpms.MainClassModuleNameExtractor.extract (MainClassModuleNameExtractor.java:97)
at org.codehaus.plexus.languages.java.jpms.LocationManager.resolvePaths (LocationManager.java:235)
at ru.akman.maven.plugins.jpackage.JPackageMojo.resolveDependencies (JPackageMojo.java:1328)
at ru.akman.maven.plugins.jpackage.JPackageMojo.execute (JPackageMojo.java:1875)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:342)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.ProcessImpl.forkAndExec (Native Method)
at java.lang.ProcessImpl.<init> (ProcessImpl.java:314)
at java.lang.ProcessImpl.start (ProcessImpl.java:244)
at java.lang.ProcessBuilder.start (ProcessBuilder.java:1110)
at java.lang.ProcessBuilder.start (ProcessBuilder.java:1073)
at org.codehaus.plexus.languages.java.jpms.MainClassModuleNameExtractor.extract (MainClassModuleNameExtractor.java:97)
at org.codehaus.plexus.languages.java.jpms.LocationManager.resolvePaths (LocationManager.java:235)
at ru.akman.maven.plugins.jpackage.JPackageMojo.resolveDependencies (JPackageMojo.java:1328)
at ru.akman.maven.plugins.jpackage.JPackageMojo.execute (JPackageMojo.java:1875)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:342)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:260)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:172)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:100)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:821)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:270)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
at org.codehaus.classworlds.Launcher.main (Launcher.java:47)
Can someone find out the cause of this error and how to fix it? How to make it work maybe with another plugin or setting? Akman/jpackage-maven-plugin is the only one I find, in which I can define home for java tools, which should allow me to make native runtime images for another operating systems, but as you can see it does not work for some reason.