(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
...
(Note:在 Windows 上,我为此编写了一个 .bat 文件。)
完成之后,这些属性应该被写入 .jar 文件中。你可以使用类似 7-Zip 的 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
然后,您需要添加属性并对您的 .jar
进行签名!
注意:除非您更改了库的结构,否则只需要对库进行一次签名/部署。即,如果您正在更新应用程序但已经修改了库的清单、正确签名并部署过了,除非您正在添加/删除应用程序中的库,否则无需重新签名/部署库。
注意二:目前的Netbeans版本仅将 Codebase
和 Permissions
清单属性添加到您的主要 .jar 文件中,而不是您的库。如果您使用Netbeans,则在尝试添加重复清单属性时,jar
实用程序会发出警告。有一个 bug 报告进入队列以解决此问题:https://netbeans.org/bugzilla/show_bug.cgi?id=234231。
编辑:最新版本的Netbeans(8.0)现在为您的清单添加了所有三个属性(Codebase
、Permissions
和Application-Name
)。
.jar
文件完成的,这些文件会被部署到服务器上。程序通过一个.jnlp
文件启动,该文件会下载到客户端并执行。 - ryvantage