您的位置:首页 > 移动开发

在网页中发布WorldWind Applet程序遇到的问题

2013-07-02 11:09 357 查看
最近由于客户要求,需要一个三维效果进行一些功能的展示所以用到了WorldWind。由于之前对Applet不是很了解,中间遇到了很多让人不解的问题,经过反复的折腾总算是在页面中把WorldWind加载了出来,下面说说我的操作步骤和遇到的问题。

1.我首先写了一个Applet小程序并打成jar包,其实就是用于显示WW的地球。然后用Eclipse 运行Applet程序,查看效果没有问题。但是放到工程中用Tomcat发布以后就出来了第一个问题报错没有签名。于是乎google,查到找了签名的最简单方法。

先是创建签名密匙证书,用cmd打开命令行,输入下面的命令:

keytool-genkey -alias Test -validity [b]365[/b]0

这个命令的的意思是 使用 keytool 工具创建签名密匙证书

-genkey 参数表示是创建操作

-alias 参数表示 给这个证书取一个别名 我这里用的别名是 Test

-validity 参数表示的是这个证书的有效期 我这里用3650 表示 十年。

这个命令执行后会提示属于一些证书的相关信息,如密码,单位,之类的按自己的情况填写即可。

然后用这个证书给我的jar进行签名,使用如下命令:

jarsigner WWJApplet.jar Test

这个命令的意思是,使用jarsigner命令为一个jar文件签名,

第一个参数 WWJApplet.jar 指的是我要签名的jar文件的名字,第二个参数 Test指的是我刚刚创建的证书的别名。

2.编写JNLP文件,具体格式可以google一下我不做太多说明(其实我也不是特别清楚,只是看了一下Oracle的官方文档,但是有些参数还是不太清楚),我这里把我得JNLP文件贴在这里。

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.6+" codebase="http://localhost:8080/testProject" href="WWJApplet.jnlp">
<information>
<title>MyApplet</title>
<vendor>测试</vendor>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources os="Windows">
<property name="sun.java2d.noddraw" value="true"/>
</resources>
<resources>
<!-- Application Resources -->
<j2se version="1.6+" href=
"http://java.sun.com/products/autodl/j2se" initial-heap-size="512m"
max-heap-size="512m"/>
<property name="sun.java2d.noddraw" value="true"/>
<jar href="WWJApplet.jar" main="true" />
<jar href="worldwind.jar" />
<jar href="jogl.jar" />
<jar href="gluegen-rt.jar" />
</resources>
<applet-desc
name="测试程序"
main-class="MyApplet"
width="500"
height="500">
<param name="separate_jvm" value="true"/>
</applet-desc>
<update check="background"/>
</jnlp>


这里需要注意的地方就是,第二个resources节点中 jar节点引用的四个jar包,其中MyApplet.jar是我自己写的Applet文件打成的jar包,另外三个是WW需要引用的三个jar包。这里重点说明一下,由于worldwind下载以后会有一个worldwind.jar文件,但是这里我用的不是这个jar,而是我根据WW源码自己打包的。就是为了能够自己签名,因为自带的worldwind.jar包文件已经被签名了,如果自己重新签名发布会有问题。另外两个jar包也使用刚刚创建的密匙文件进行签名。

然后把jar文件和html页面放入到工程根目录,如下(也可以根据自己的需要随意放置):



3.具体的html代码如下图:



然后启动tomcat就可以查看到效果。

在做这个例子的时候我遇到了三个问题,

1.签名的问题。

当时参考了这个博客 http://www.cnblogs.com/jingua1026/articles/1275209.html

2.jar引用不到的问题。

在网上看到很多例子里边都是把applet中引用的jar包写在html applet标签的 archive属性中,但是不知道为什么我这么写就一直是引用不到,很费解。

具体写法就是这样

<applet  codebase="."
code="WWJApplet.jar" width="100%" height="500"
archive="jogl.jar, gdal.jar, worldwind.jar, worldwindx.jar, gluegen-rt.jar, plugin.jar">
<param name="jnlp_href" value="WWJApplet.jnlp">
<param name="codebase_lookup" value="false">
<param name="subapplet.classname" value="WWJApplet">
<param name="subapplet.displayname" value="WWJ Applet">
<param name="noddraw.check" value="true">
<param name="progressbar" value="true">
</applet>

3.就是从nasa下载的worldwind.jar包签名问题,使用源码自己打包重新签名就可以了。

说来惭愧,第一次写博客可能有说的不清楚明白的地方请见谅,如果有朋友也遇到类似的问题可以@我。

顺便说一句,applet 标签中的 codebase 的内容不是相对于工程的而是相对于当前文件的(html).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: