(1) 首先,您需要创建一个包含您要添加的所有属性的文本文件。我的文本文件如下所示:
Permissions: all-permissions
Codebase: http://www.codebase.com/myApp/dist
Application-Name: My Application
我将其命名为addToManifest.txt。显然,您需要更改参数以满足应用程序的需求。
(2) 接下来,您需要将它添加到主 .jar 和所有库中。执行此操作的命令是:
jar ufm dist\myApp.jar addToManifest.txt
当然,dist\myApp.jar 需要指向您的主要 .jar 文件。您还需要对所有库执行此操作。
jar ufm dist\lib\jcommon-1.0.16.jar addToManifest.txt
jar ufm dist\lib\jfreechart-1.0.13.jar addToManifest.txt
jar ufm dist\lib\joda-time-2.2.jar addToManifest.txt
...
(注意:在 Windows 上,我为此写了一个 .bat 文件。)
完成此操作后,应将属性写入.jars。您可以在 zip 管理器(如 7-Zip)中打开 .jar,解压缩 MANIFEST.MF 文件,在文本编辑器中打开它,您应该会看到列出的属性。
(3) 添加属性后,您需要退出应用。执行此操作的命令是:
jarsigner dist\myApp.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
您还需要为所有库执行此操作:
jarsigner dist\lib\jcommon-1.0.16.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
jarsigner dist\lib\jfreechart-1.0.13.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
jarsigner dist\lib\joda-time-2.2.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
之后,应添加您的属性并签名您的.jars!
注意:您只需签署/部署您的库一次,除非您更改库结构。即,如果您正在更新您的应用,但库已经更改、正确签名和部署了它们的清单,则除非您从应用中添加/删除库,否则您无需重新签名/部署库。
注意 #2:当前版本的 Netbeans 会将 Codebase 和 Permissions 清单属性添加到您的仅主 .jar,但不会添加到您的库中。如果您使用 Netbeans,当您尝试添加重复的清单属性时,您将收到来自 jar 实用程序的警告。队列中有一个错误报告以修复此问题https://netbeans.org/bugzilla/show_bug.cgi?id=234231。
编辑:最新版本的 Netbeans (8.0) 现在为您将所有三个(Codebase、Permissions 和 Application-Name)添加到清单中。