Ubuntu和SuSE的Java应用程序安装程序/打包程序

6
我有一个编译成一组JAR文件的Java应用程序,我想在Ubuntu和SuSE上安装它。我希望安装程序能够检查JRE,注册文件关联,并能够在卸载时加载网站。
我知道Ubuntu和SuSE基于不同的架构,那么有没有一种一致的方法来做到这一点?
有没有人可以给我建议使用哪些实用工具或指南来帮助我实现我的目标。
6个回答

10
为每个平台分发debrpm将提供最佳的用户体验和系统集成(检查JRE依赖性,注册文件关联等)。对于基于Debian的发行版,请参考Ubuntu上打包Java应用程序(幻灯片可在这里找到)。要构建rpm,请查看RPM HowtoopenSUSE上的Java软件开发和打包
如果您不想为每个平台构建软件包,则建议使用安装程序进行分发,例如IzPack。该工具允许生成唯一的跨平台安装程序,提供本地集成,高度可定制化,涵盖卸载部分,并且安装程序的生成可以轻松地包含在自动构建(基于Ant或Maven)中。它真的是一个很好的工具。并且有一些严肃的参考资料(Sun Microsystems、JBoss/RedHat、Scala语言项目、一些ObjectWeb/OW2项目、XWiki等)。

1
这些链接对我非常有帮助:Java在Debian中的打包工作Debian Java打包 - gorlok

3

请尝试以下方法。此安装程序适用于大多数Linux发行版。

将您的jar文件插入.tar.gz档案中。如果您想在“程序”菜单上创建一个菜单项,请创建一个“YOUR PROGRAM.desktop”文件,并将此脚本放入其中。

[Desktop Entry]
Comment=YOUR COMMENT
Name=YOUR PROGRAM
#(Must same as .desktop file's name)
Exec=java -jar "(Path to Extracted folder)/myapp.jar"
Terminal=false
Type=Application
Icon=(Path to Extracted folder)/myapp.png
Categories=Development

好的,现在你也可以将它放入一个.tar.gz归档文件中。

现在你需要创建一个"install.sh"文件(文件名不重要,也可以没有扩展名-.sh)

这里是代码

#!/bin/bash
if which java >/dev/null; then<
sudo tar xvfz YOUR PROGRAM.tar.gz -C /opt #(Path for Extract Files)
mkdir ~/.local/share/applications
sudo tar xvfz DESKTOP.tar.gz -C ~/.local/share/applications
echo "Program installed.!"
else
    echo "JRE Not Installed..!"
fi
read
exit

把所有三个文件放在同一个文件夹中,然后运行install.sh文件(必须标记为可执行)

希望这对任何人有所帮助。


2
您可以使用BitRock InstallBuilder,它允许您创建GUI安装程序、RPM和DEB包。它可以完成您指定的操作(文件关联、启动网页等)。这是商业软件,但我们为开源项目提供免费许可证,并为小公司提供折扣。

2

如果你不想疏远用户,就尽可能让用户使用该发行版本身的工具来管理您的软件包(参见Pascal Thivent的答案)。对于Ubuntu和SUSE,这意味着使用deb和rpm软件包。

作为用户,每当我需要使用它们自己的安装程序安装软件包时,我立即感到恼怒。


1
如果你正在寻找图形用户界面安装程序,则可以查看InstallJammer。否则,您可能要考虑为每个平台构建单独的本地安装程序。例如,在SuSE情况下使用RPM,在Ubuntu情况下使用DEB。如果需要,InstallJammer可以为这些系统中的每个本机包管理器提供GUI并注册。

0

我有一个将Java应用程序打包成Debian/Ubuntu deb归档文件的需求,但是没有找到合适的指南。所以当我成功创建了deb归档文件后,我写了自己的指南

基本上,我所做的就是创建一个Bash脚本,将.class文件等排列在一个文件层次结构中,准备好一个.deb归档文件,编写一个可执行脚本来启动打包的程序,处理GUI处理的.desktop文件,然后运行dpkg --build命令。此外,一个重要的步骤是,在生成的.deb文件上运行lintian -i,以确保您遵守所有标准和政策。


仅提供一个链接被视为不好的答案(参见[常见问题 #删除]),因为它本身是没有意义的,并且目标资源未来不能保证存在。最好将答案的关键部分包含在这里,并提供参考链接。这样做会更好 - j0k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接