使用Jpackage打包Java应用为Ubuntu Deb包后命令无法识别,如何使其成为系统命令?
解决jpackage生成Deb包后命令无法直接调用的问题
问题根源
Deb包安装完成后,jpackage默认生成的启动脚本会放在/opt/[应用名]/bin/这类不在系统默认PATH里的目录,导致终端找不到对应的命令。
具体解决办法
方法1:生成包时添加--linux-shortcut参数(推荐)
在jpackage命令中加入--linux-shortcut参数,它会自动把启动脚本链接到系统PATH包含的目录(比如/usr/bin/),无需手动操作:
jpackage --type deb --input . --name rakib --main-class org.rakib.App --main-jar target/test_jpackage-0.0.1.jar --linux-shortcut
重新生成并安装Deb包后,直接在终端敲rakib就能调用应用。
方法2:手动创建软链接
如果不想重新打包,可手动把启动脚本链接到系统PATH目录:
- 先找到jpackage生成的启动脚本,一般路径是
/opt/rakib/bin/rakib - 执行以下命令创建软链接:
sudo ln -s /opt/rakib/bin/rakib /usr/bin/rakib
操作完成后,终端就能识别rakib命令。
方法3:指定安装到系统PATH目录(不推荐)
通过--linux-install-dir参数指定应用安装到系统默认PATH包含的目录,比如/usr,这样启动脚本会直接放到/usr/bin/:
jpackage --type deb --input . --name rakib --main-class org.rakib.App --main-jar target/test_jpackage-0.0.1.jar --linux-install-dir /usr
不过这种方式会打乱系统默认的目录结构,不建议使用。
验证配置是否成功
安装完成后,执行以下命令检查命令是否在系统PATH中:
which rakib
如果输出命令的绝对路径,说明配置生效。
内容的提问来源于stack exchange,提问作者Jahadul Rakib
相关产品推荐
相关产品推荐

