当前位置: 首页 > 工具软件 > JPackage > 使用案例 >

快速浏览jpackage

燕钟展
2023-12-01

使用Java 14,我们将获得一个为Java应用程序创建本机安装档案的工具。 不幸的是,尽管这些天客户端上的Java并不是热门话题,但缩小当前差距非常重要-再次。 曾经有一个命令行工具叫做javafxpackager后来改名了javapackager甚至后来从JDK中删除。 java(fx)packager执行与打包和签名Java和JavaFX应用程序有关的任务,因此,当JavaFX与JDK解除捆绑时,也应暂时删除相关工具。 用包新的,重新考虑的和更一般的实施回报。 Java 14 will be released in March 2020 so what is available today is preliminary (early access)。 Further, 包 is considered an incubator feature, so even what we will see in March may change over time。 在Mac上安装Java只需几分钟。 下载并解压缩tarball之后,只需将基本目录移至/图书馆/ Java / JavaVirtualMachines /。

cd ~/Downloads
tar xzf openjdk-14-ea+28_osx-x64_bin.tar.gz
sudo mv jdk-14.jdk /Library/Java/JavaVirtualMachines

您知道吗,您可以列出已安装的Java版本/ usr / libexec / java_home -V? 默认情况下,Mac将使用最新版本,因此在安装之后Java版本将打印类似openjdk版本“ 14-ea” 2020-03-17。 还是打字包会产生一个没有找到指令。 要解决此问题,您可以添加/图书馆/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home/bin至路径. For now I suggest至just use the absolute path when invoking the tool, because you will pass quite a few arguments, so creating a small shell script will make your life much easier.

看一下这个:

#!/bin/sh
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home
BASEDIR=/Users/thomas/Entwicklung/Bitbucket/clip4moni
VERSION=`sed -n -e 's/.*VERSION = \"\(.*\)\".*/\1/p' < $BASEDIR/src/main/classes/com/thomaskuenneth/clip4moni/Clip4Moni.java`

$JAVA_HOME/bin/jpackage --name Clip4Moni --icon $BASEDIR/artwork/Clip4Moni.icns --app-version $VERSION --type app-image --module-path $BASEDIR/build/modules -m main/com.thomaskuenneth.clip4moni.Clip4Moni

我用它来为我的应用程序创建应用程序包Clip4Moni,这是一个小型文本代码段工具,位于系统任务栏(Windows,Linux)或菜单栏中(在Mac上)。 它基于Java模块。 而包也可以与普通jar一起使用,我强烈建议将您的代码带到最新的Java版本中。 语言中加入了许多不错的功能,可惜不使用它们。 现在,让我们遍历脚本,从最后一行开始。 - 名称是应用程序的名称。 - 图标引用图标文件。 - 类型定义应创建哪种档案,在这种情况下,它只是应用程序捆绑包。--米odule-path指定模块文件的位置。-米标识主要类别。

--app版本设置应用的版本号,例如1.3.3。 如果你看我的剧本,我看起来很有趣sed呼叫。 让我解释。 我将应用程序版本定义为串不变。 因此,我转到定义所在的源文件,并读取版本号。 这是输入:

...
public static final String VERSION = "1.3.3";
...

包易于使用。 尽管它仍处于预览状态,但它工作得很完美。 我只注意到了一件小事。 Mac应用程序捆绑包的一部分是一个名为info.plist that contains important information about the app. It is created by 包. Currently it contains these lines:

<!-- See https://developer.apple.com/app-store/categories/ for list of AppStore categories -->
<key>LSApplicationCategoryType</key>
<string>Unknown</string>

潜在的想法似乎是开发人员编辑文件。 但是使用我脚本中的语法,它是即时创建的。 一种解决方案是在调用以下命令后对其进行编辑包。 但是,如果您对自己的应用进行签名,则可能无法正常工作(可以通过以下方法完成包)。 我想看到的另一件事是能够引入其他条目。 我的应用程序驻留在菜单栏中,因此我想隐藏Dock图标。 这样做如下:

<key>LSUIElement</key>
<string>true</string>

在命令行中指定此类条目会很酷。 可能已经有解决方案,因此,亲爱的读者,如果您知道该怎么做,请在评论中告诉我。

from: https://dev.to//tkuenneth/a-quick-look-at-jpackage-lli

 类似资料: