public static void main(String[] args) {
System.out.println( "Hello World!" );
}
}
2、编译 javac HelloWorld.java。
3、打包 jar cvmf manifest.mf helloworld.jar HelloWorld.class
manifest.mf:
Manifest-Version: 1.0
Main-Class: HelloWorld
4、创建jnlp文件:helloworld.jnlp
< jnlp codebase ="http://127.0.0.1:8080" >
< information >
< title > HelloWorld </ title >
< vendor > rxiaozheng </ vendor >
< description > HelloWorld for WebStart. </ description >
< homepage href ="http://127.0.0.1:8080" />
< offline-allowed />
</ information >
<resources>
<j2se version="1.4+"/>
<jar href="helloworld.jar"/>
</resources>
<application-desc main-class="HelloWorld"/>
</jnlp>
5、创建网页
接下来就可以通过网页链接执行web start程序了。在web start的控制台可以看到Hello World输出。
如果HelloWorld需要访问本地资源,则需要对jar包进行签名。签名方法如下:
1、创建keystore:
keytool -genkey -alias mykey -keystore mykeystore -keypass mypass -storepass mykeystorepass -validity 80
参数说明如下:
-alias mykey :指定密钥的别名,不指定的话默认为 "mykey"
-keystore mykeystore :指定密钥数据库名,不指定则默认在Documents and Settings/Administrator下生成一个名称为 .keystore的文件。
-keypass mypass :指定密钥密码,用jarsigner签名时需要。
-storepass mykeystorepass :指定密钥数据库密码,用jarsigner签名时需要。
-validity 80 :密钥有效时间为80天,不指定的话默认为90天
2、添加签名:
jarsigner -keystore mykeystore helloworld.jar mykey
仅签名还不能访问本地文件,需要修改jnlp文件,新加入访问控制规则:
< all-permissions />
</ security >
需要注意的是,对于多个jar包,需要对每个jar包进行签名,且签名需要相同,如果多个jar包中有不同签名,会报“JNLP 文件中的 JAR 资源签名证书不一致”错误。
有时候调用别人签名过的jar包,即使重新签名,还会报上面的错误,原因在于在jar包的META-INF文件夹里有两个签名文件,需要把之前的签名文件删除。
参考: http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/contents.html