在html中以applet的形式展示worldwind
2014-03-22 21:18
369 查看
首先添加worldwind运行需要的环境,将你下载下来的源文件worldwind文件夹下的,jogl.dll,gluegen-rt.dll,jogl_awt.dll,jogl_cg.dll放到你JDK\jre\bin文件夹下)
创建一个 web project项目Test ,将worldwind文件夹中的src下的config文件夹复制到Test的src中,现在创建一个可运行的applet程序,代码如下:
这时候,程序会报错,因为缺少库,执行build path 加入worldwind文件夹下的jogl.jar,gluegen-rt.jar(添加方法和下面添加jar文件一致)。最后还需要加入一个jar文件worldwind,但这个worldwind.jar不是worldwind文件夹下的worldwind.jar,而是此时我们重新进行打包的一个jar(这样做是因为,下载下来的worldwind.jar已经签名,我们发布applet的时候需要自己签名的jar)。做法如下,创建一个eclipse项目test1,将worldwind\src文件夹下的所有文件拷贝到test1的src文件夹下,右键项目
build path ,config build path后弹出下面的框
点击Add external jar添加worldwind文件下的几个jar文件(如上图),Run as Java Applet运行test1,若程序正常运行,右键项目,export,然后选择JAVA目录下的JAR,点击next,弹出如下框
这个弹框里,选择默认,红框部分,是你给这个导出的jar文件导出的地方和名字,我们可以选择将其放倒Test项目下,再点击next,生成worldwind.jar。(注意,这个项目中,我们build path了jogl.jar,gluegen-rt.jar,和worldwind.jar,我们还需要将这三个文件复制放到Test文件夹下)这个时候我们创建的Test项目不再报错,运行Test项目WWJApplet.java运行正常。我们再将Test项目export为JAR文件WWJApplet.jar放到Test目录下,Test工程结果如下
接下来,我们对几个jar文件签名,打开cmd,进入到Test项目目录下(签名之前可先验证一下自己的jar文件是否签名 jarsigner -verify jogl.jar,并且要注意,Test目录下的jogl.jar,和gluegen-rt.jar,最好是从worldwind文件夹下复制过来的,最好不要直接对worldwind文件夹下的jar文件签名),步骤如下
1、keytool -genkey -aliasyourname -validity 3650//使用 keytool 工具创建签名密匙证书
-genkey 参数表示是创建操作
-alias 参数表示 给这个证书取一个别名 我这里用的别名是 Test(你也可取你的名字之类的)
-validity 参数表示的是这个证书的有效期 我这里用3650 表示 十年。
这个命令执行后会提示属于一些证书的相关信息,如密码,单位,之类的按自己的情况填写即可
注意输入口令的时候,他是不显示的,如下图所示,你不要担心是自己的键盘失灵了,你可以很简单输入123之类的,当然你也可以写复杂一点的,但一定要记住,因为每一个签名都要用到。
2、keytool -export -alias Test -file yourname.crt
3、jarsigner worldwind.jar yourname
这样将jogl.jar,gluegen-rt.jar,worldwind.jar,WWJApplet.jar全部签名了。
下面我们来写jnlp文件,我们命名为WWJApplet.jnlp
最后我们写html文件,WWJApplet.html
注意其中的codebase="."是相对我们写的html文件位置的,因为我将html文件和WWJApplet.jar放在同一位置,所以我写的“.”
还有一步不能忘记,我们要在Test项目的web.xml文件中插入<mime-mapping>到</mime-mapping>的代码,完整web.xm;如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
</web-app>
到此为止,worldwind球体应该就能在浏览器中运行了
写的这么详细,是想让那些像我之前一样,为这个将worldwind部署到html上而恼火的人能够早日脱离苦海啊,最后感谢http://my.oschina.net/zhanghongbin/blog/141803这个博主给我的巨大帮助。如果有人看到我这篇博文觉得讲的不清楚, 可以参照他的文章
创建一个 web project项目Test ,将worldwind文件夹中的src下的config文件夹复制到Test的src中,现在创建一个可运行的applet程序,代码如下:
package com; import gov.nasa.worldwind.*; import gov.nasa.worldwind.avlist.AVKey; import gov.nasa.worldwind.awt.WorldWindowGLCanvas; import gov.nasa.worldwind.util.StatusBar; import javax.swing.*; import java.awt.*; /** * Illustrates the how to display a World Wind <code>{@link WorldWindow}</code> in a Java Applet and interact with the * WorldWindow through JavaScript code running in the browser. This class extends <code>{@link JApplet}</code> and * embeds a WorldWindowGLCanvas and a StatusBar in the Applet's content pane. * * @author Patrick Murris * @version $Id: WWJApplet.java 1 2011-07-16 23:22:47Z dcollins $ */ public class WWJApplet extends JApplet { static { System.setProperty("gov.nasa.worldwind.config.file", "config/worldwind.properties"); } public WWJApplet() { } public void init() { try { // Create World Window canvas. WorldWindowGLCanvas wwd = new WorldWindowGLCanvas(); this.getContentPane().add(wwd, BorderLayout.CENTER); // Create the default model as defined in the current worldwind configuration file. wwd.setModel((Model) WorldWind.createConfigurationComponent(AVKey.MODEL_CLASS_NAME)); // Add the status bar, and forward events to the status bar to provide the cursor position info. StatusBar statusBar = new StatusBar(); statusBar.setEventSource(wwd); this.getContentPane().add(statusBar, BorderLayout.SOUTH); } catch (Throwable e) { e.printStackTrace(); } } public void stop() { // Shut down World Wind when the browser stops this Applet. WorldWind.shutDown(); } }
这时候,程序会报错,因为缺少库,执行build path 加入worldwind文件夹下的jogl.jar,gluegen-rt.jar(添加方法和下面添加jar文件一致)。最后还需要加入一个jar文件worldwind,但这个worldwind.jar不是worldwind文件夹下的worldwind.jar,而是此时我们重新进行打包的一个jar(这样做是因为,下载下来的worldwind.jar已经签名,我们发布applet的时候需要自己签名的jar)。做法如下,创建一个eclipse项目test1,将worldwind\src文件夹下的所有文件拷贝到test1的src文件夹下,右键项目
build path ,config build path后弹出下面的框
点击Add external jar添加worldwind文件下的几个jar文件(如上图),Run as Java Applet运行test1,若程序正常运行,右键项目,export,然后选择JAVA目录下的JAR,点击next,弹出如下框
这个弹框里,选择默认,红框部分,是你给这个导出的jar文件导出的地方和名字,我们可以选择将其放倒Test项目下,再点击next,生成worldwind.jar。(注意,这个项目中,我们build path了jogl.jar,gluegen-rt.jar,和worldwind.jar,我们还需要将这三个文件复制放到Test文件夹下)这个时候我们创建的Test项目不再报错,运行Test项目WWJApplet.java运行正常。我们再将Test项目export为JAR文件WWJApplet.jar放到Test目录下,Test工程结果如下
接下来,我们对几个jar文件签名,打开cmd,进入到Test项目目录下(签名之前可先验证一下自己的jar文件是否签名 jarsigner -verify jogl.jar,并且要注意,Test目录下的jogl.jar,和gluegen-rt.jar,最好是从worldwind文件夹下复制过来的,最好不要直接对worldwind文件夹下的jar文件签名),步骤如下
1、keytool -genkey -aliasyourname -validity 3650//使用 keytool 工具创建签名密匙证书
-genkey 参数表示是创建操作
-alias 参数表示 给这个证书取一个别名 我这里用的别名是 Test(你也可取你的名字之类的)
-validity 参数表示的是这个证书的有效期 我这里用3650 表示 十年。
这个命令执行后会提示属于一些证书的相关信息,如密码,单位,之类的按自己的情况填写即可
注意输入口令的时候,他是不显示的,如下图所示,你不要担心是自己的键盘失灵了,你可以很简单输入123之类的,当然你也可以写复杂一点的,但一定要记住,因为每一个签名都要用到。
2、keytool -export -alias Test -file yourname.crt
3、jarsigner worldwind.jar yourname
这样将jogl.jar,gluegen-rt.jar,worldwind.jar,WWJApplet.jar全部签名了。
下面我们来写jnlp文件,我们命名为WWJApplet.jnlp
<?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.7+" codebase="http://localhost:8080/Test" 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.7+" href=17 "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="com.WWJApplet" width="500" height="500"> <param name="separate_jvm" value="true"/> </applet-desc> <update check="background"/> </jnlp>
最后我们写html文件,WWJApplet.html
<html> <head> <meta charset="UTF-8"> <title>worldwind</title> </head> <body> <applet codebase="." code="WWJApplet.jar" width="100%" height="500"> <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> </body> </html>
注意其中的codebase="."是相对我们写的html文件位置的,因为我将html文件和WWJApplet.jar放在同一位置,所以我写的“.”
还有一步不能忘记,我们要在Test项目的web.xml文件中插入<mime-mapping>到</mime-mapping>的代码,完整web.xm;如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
</web-app>
到此为止,worldwind球体应该就能在浏览器中运行了
写的这么详细,是想让那些像我之前一样,为这个将worldwind部署到html上而恼火的人能够早日脱离苦海啊,最后感谢http://my.oschina.net/zhanghongbin/blog/141803这个博主给我的巨大帮助。如果有人看到我这篇博文觉得讲的不清楚, 可以参照他的文章
相关文章推荐
- User-Agent html(将数据以网页形式展示) 文件夹 join() 打包
- 比较简单的asp.net 网页以HTML形式存储的几个方法
- 将HTML中引用的image/css转为内嵌形式
- 分享21个超棒的单页面HTML作品集展示模板
- jstl-按照html的形式输出至页面
- PL/SQL 下SQL结果集以html形式发送邮件
- django 将后台表数据展示在前台html页面中
- 粗暴解决 HTMLTestRunner 加入截图展示功能
- TouchPoint.js – 可视化展示 HTML 原型点击效果
- UIwebView的使用,把网页以UIView的形式展示出来
- angular 动态取到的html片段 在页面的展示
- applet在appletview中是正常的,在html中不显示?该如何处理
- EXCEL转换html展示在moss
- Struts2整合jasperreport html展示图片不显示的解决办法
- [IOS]HTML格式的UIWebView展示
- 从网络上面获得html数据以及 handler Message的使用形式
- 查询数据 表格形式展示
- HTML入门笔记案例展示(2)
- 解决html 展示一长串数字不能自动换行
- 利用PD4ML将html 生成PDF 并展示