`

World Wind Java Applet Jnlp 配置过程(入门 教程 问题)

阅读更多

原地址: http://hi.baidu.com/xjx19860908/blog/item/786caf1eebb4f8ff1ad5760e.html

 

 

配置applet:

我用的是tomcat 。

首先配置tomcat:在tomcat的安装路径—conf—web.xml。打开xml这个配置文件,加上:

    <mime-mapping>
        <extension>jnlp</extension>
        <mime-type>application/x-java-jnlp-file</mime-type>
    </mime-mapping>

保存,这样tomcat就支持jnlp文件了。

 

当然也可以自己用ide建一个web project.

 

现在在tomcat的webapps文件夹下新建一个wwj的目录,并把worldwind.jar、jogl.jar、gluegen-rt.jar(这三个jar包可以从下载下来的SDK中找到)考到wwj目录下面。

 

还需要一个WWJApplet.jar的jar包,我不想从网上download这个jar包,因为download下来的不一定和自己用的SDK版本一样,所以我自己手动打了一个WWJApplet.jar的jar包,具体做法是:

1、SDK我解压在D:下,名称为wwj;

2、编译D:\wwj\src\gov\nasa\worldwind\examples\applet目录下的WWJApplet.java,生成WWJApplet.class,然后将这个文件打包:cmd 中,目录定位到D:\wwj\src,用如下命令:

jar -cvf WWJApplet.jar gov\nasa\worldwind\examples\applet\WWJApplet.class。这样就生成了WWJApplet.jar包了(SDK版本可能不一样,请注意)。

将做好的WWJApplet.jar包夜拷贝到webaaps下wwj目录中,并对wwj目录下的jar包签名,至于怎么样签名见下文。

接下来就是怎样编写jnlp文件了

相信大家也download了不少WWJApplet.jnlp文件,我也download了一个,把他放到wwj目录下面,双击运行,也能调出来。不过我想用我自己的下载好的jogl等文件,于是我做了一个修改,以下是修改的代码:

<?xml version="1.0" encoding="UTF-8"?>
       <jnlp
            codebase="http://192.168.1.18:8080/wwj"// 这里你要改成你的服务器地址
            href="WWJApplet.jnlp">
        <information>
            <title>World Wind Java Applet Demo</title>
            <vendor>NASA</vendor>
            <homepage href="http://192.168.1.18:8080"/ >
            <description>World Wind Java Applet Demo</description>
            <description kind="short">World Wind Java Applet Demo</description>
            <offline-allowed/>
        </information>
        <security>
            <all-permissions/>
        </security>
         <resources os="Windows">
           <property name="sun.java2d.noddraw" value="true"/>
         </resources>
         <resources>
            <j2se href="http://java.sun.com/products/autodl/j2se " version="1.6+" 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"/>

            <!--<extension name="jogl"
                       href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp"/ >-->    //以前这里是默认用这个的,不过我现在注释了,用上面深红字体代码了
         </resources>
         <!-- Width and heigth are overwritten by the surrounding web page -->
         <applet-desc
             name="WWJ Applet"
             main-class="gov.nasa.worldwind.examples.applet.WWJApplet"
             width="800" height="600">
            <param name="separate_jvm" value="true" />
         </applet-desc>
       </jnlp>

保存,启动tomcat,运行该jnlp文件,成功,如图:

 

 

 

最后一步就是把jnlp放入到网页中了,新建一个网页,加入以下代码:

<APPLET WIDTH = 100% HEIGHT = 100%>
<PARAM NAME = "jnlp_href" VALUE="WWJApplet.jnlp">
</center></APPLET>

如果不想放入到网页中,直接运行java程序,你只需要修改一下jnlp中的代码,如下:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0"
      codebase="http://192.168.1.18:8080/wwj/ "
      href="test.jnlp">
    <information>
        <title>World Wind Java Application Template</title>
        <vendor>NASA</vendor>
        <homepage href="http://192.168.1.18:8080"/ >
        <description>World Wind Java Application Template</description>
        <description kind="short">World Wind Java Application Template</description>
        <offline-allowed/>
    </information>
    <security>
        <all-permissions/>
    </security>

    <resources>
        <j2se href="http://java.sun.com/products/autodl/j2se " version="1.6+" initial-heap-size="512m"
              max-heap-size="512m"/>
        <property name="sun.java2d.noddraw" value="true"/>
        <jar href="worldwind.jar" main="true"/>
        <jar href="worldwind.jar"/>
        <jar href="jogl.jar"/>
        <jar href="gluegen-rt.jar"/>
        <!--<extension name="jogl"
                  href="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp"/ >-->
    </resources>
    <application-desc main-class="gov.nasa.worldwind.examples.ApplicationTemplate"/>
</jnlp>

然后新建一个网页,并在网页加如下代码:<a href="test.jnlp">hao kan ma </a>

保存,打开网页,单击链接就可以了。

注意:要运行的机器上,一定要有JRE,如果没有,则是不行的。

 

说白了就是网页上要执行一个jnlp文件,这个文件制定applet的入口,及所需的各种资源的位置。

 

 

以上是原文了,自己弄的时候出的几个问题:

 1 applet 报 jar包未签名错误

需要用jarsigner.exe和keytool.exe两个命令,他们可以在jdk的bin下找到.

 

1. 先将你的class打包成jar 文件;如为leaderbird.jar
2. 使用cd 操作系统命令进行到当前所对应的jar文件所在的目录
3. 使用命令:
keytool -genkey -alias workkey -keystore workstore -validity 2000
得到与设置key;其中workkey为别名,workstore为key名称.其中2000代表有效天数为2000(天)

如果你想察看一下刚才生成的myKeystore文件的内容,可以使用下面这句话:
keytool -list -keystore workstore
4. 接下来按照提示进入输入相关信息 ,它将会提示你输入用户名、密码等,不用理它,按照提示随便输入即可,但一定要记住密码


5. 设置你本次要签名的那些jar文件;用下面的命令.
jarsigner -keystore workstore leaderbird.jar workkey

注意与第三步的名称保持一致就可以了.

6. 为其他jar文件签名,重复第五步就可以了.

 

 2 Bad version number in .class file

使用MyEclipse 6.5,在组织好测试用例之后,发现Java Compiler -> Compiler compliance level是5.0。之前一直在使用5.0的级别进行编译运行。当我切换Compiler compliance level到6.0以后,重新编译工程,运行测试用例,抛出异常:

ava.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:425)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:445)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

从第一行“java.lang.UnsupportedClassVersionError: Bad version number in .class file”,它说在类文件中发现了错误的版本号,我以为是因为启动了Project -> Build Automatically自动编译,每次编译没有修改类路径下类文件的版本号,于是禁用了Build Automatically,删除WebRoot\WEB-INF\classes下类文件,手动指定Compiler compliance level为6.0,重新编译,生成了类文件,再重新执行程序的时候,依然是上面的异常。

仔细琢磨了一下,原来MyEclipse 6.5的JRE是5.0的,虽然我设置了Compiler compliance level为6.0,其实依然是再5.0的JRE下进行编译的。

打开Installed JREs,重新Add一个JRE,指定一个JRE路径,使用自己安装的JDK 6.0,也就是JRE 6的环境进行编译,这时再运行测试用例,就能正常编译执行了。

 

3 no jogl in java.library.path

因为ww用的是opgl三维库,所以要加几个dll文件:

 gluegen-rt.dll、jogl.dll、jogl_awt.dll、jogl_cg.dll

 

   方法一:将这4个DLL文件复制到jre的bin目录下。
     方法二:设置环境变量,在PATH 中加入这几个dll文件所在的目录。
     方法三:在eclipse的Java 项目中导入原生库文件。操作方法是:在eclipse 的包资源管理器中,右单击项目名→导入→常规→文件系统→下一步→浏览→选择DLL文件所在目录→确定→勾选DLL文件→完成.(试过不行的)
     方法四:将所有dll文件放在工程目录下。
     方法五:可以在运行程序时候指定java.library.path为这几个dll所在的目录,在eclipse中,如果你打开Help菜单中About Eclipse Platform,然后在出现的对话框中选择configuration details按钮,你可以在接下来出现的对话框中找到java.library.path
   方法六:配置java.library.path你还有另外一种办法,就是在最后运行程序的时候,从Run菜单中选择Run As..而不是Run As Java Application,填写好必要的其他参数以后打开Argument选项卡,然后在VM Argument输入框中填写该参数为dll文件的路径
   方法七:将5个dll文件放在同一个文件里命名为swt--Native library location然后在工程属性中的库中,点击swt或者相关的一个jar文件,其中有一行是Native library location编辑,将其路径指向lib目录下的swt--Native library location文件即可。
   方法八:同四,将所有dll文件放在同一个目录Native library location下,将这个文件放在工程的lib文件下,然后添加到库属性jre system library下的Native library location的路径中。 

 

4 netscape.javascript.JSObject

这个类在 JRE 的 lib 目录下,plugin.jar 里面,拷过来放到项目里。

分享到:
评论
2 楼 qq3553174 2011-03-18  
编译D:\wwj\src\gov\nasa\worldwind\examples\applet目录下的WWJApplet.java,生成WWJApplet.class

编译不过啊。报错。
1 楼 zxloveff123 2011-01-19  
              关于往运行环境中添加dll文件的补充

当程序中调用web元素或嵌入网页时,会抛出异常如下:
Exception in thread "WebView UI" java.lang.UnsatisfiedLinkError: no webview32 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at gov.nasa.worldwind.util.webview.WindowsWebViewJNI.<clinit>(WindowsWebViewJNI.java:23)
at gov.nasa.worldwind.util.webview.WindowsWebView$1.run(WindowsWebView.java:161)

注:运行gov.nasa.worldwind.examples.BrowserBalloons类,会抛上述异常,此类中使用了嵌入网页的气泡。

解决方法:
将world wind jdk 文件夹中的WebView32.dll(32为系统使用)或WebView64.dll(64位系统使用)添加到运行环境中,方式同“3 no jogl in java.library.path

”的操作。
                                                  
                                                  小白大哥的跟班小弟
                                                           

相关推荐

    WorldWind学习笔记[二]worldwind 在applet上部署

    3. **实现Applet类**:在Java代码中,创建一个继承自`javax.applet.Applet`的类,并在其中设置WorldWind的基本配置,如视口大小、地球模型等。例如: ```java public class MyWorldWindApplet extends Applet { ...

    Java Applet 入门教程

    这个入门教程将带你了解Java Applet的基本概念、工作原理以及如何编写和部署。 1. **Java Applet简介** - Java Applet是Java平台的一个组件,它可以在Web浏览器中执行,为用户提供交互式和动态的Web内容。 - 由于...

    javaApplet 实例入门教程

    本入门教程旨在帮助初学者理解和掌握JavaApplet的基本概念、开发环境设置以及实际编程技巧。 1. **JavaApplet基本概念** JavaApplet是一种小型的Java应用程序,它能够在Web浏览器中运行,提供丰富的用户界面和交互...

    JavaApplet实例及教程

    Java+Applet实例讲解(分为1和2两部分)、Java+Applet实例编程、java+Applet登录、JavaApplet教程.pdf、JAVA_applet应用实例.ppt、JavaApplet编程技巧实例专辑、javaapplet例子.doc、Applet类.doc等教程。...

    JavaApplet教程

    ### Java Applet 教程详解 #### 一、准备工作 在开始编写 Java Applet 之前,需要做一些准备工作: 1. **获取 Java 编译器**:最常用的编译器是 SUN 公司的 JDK(Java Development Kit),也可以使用微软的 VJ++ ...

    Java Applet-applet教程入门

    很好的书籍,不看可惜了

    JavaApplet实例讲解以及教程大全

    本教程全面覆盖了JavaApplet的基础知识、实战技巧和常见问题,旨在帮助学习者深入理解并掌握这一技术。 1. **JavaApplet基本概念** - **Applet生命周期**:JavaApplet的生命周期包括初始化、加载、显示、暂停、...

    JavaApplet_javaapplet小程序_java_

    JavaApplet是Java技术在早期Web开发中的一种重要应用,它允许开发者创建可以在网页中运行的小型程序。这些小程序能够增强交互性,提供动态内容,比如游戏、图表、动画等。JavaApplet运行在用户的浏览器上,由Java ...

    java版WorldWind源代码解析之一.doc

    在Applet中使用WorldWind需要Java API for OpenGL (JOGL) Applet Launcher。JOGL使得在Applet中创建和部署基于OpenGL的3D图形成为可能,无需客户端安装额外软件。示例代码展示了如何在Applet中部署WorldWind,包括...

    javaapplication和javaapplet的区别

    ### Java Application与Java Applet的区别 #### 一、概述 Java是一种广泛使用的编程语言,它以其平台无关性和安全性而著称。在Java中,有两种主要的应用类型:Java Application(Java应用程序)和Java Applet...

    java applet入门程序

    Java Applet是Java技术在早期Web开发中的一个重要应用,它允许开发者创建可在用户浏览器中运行的小型Java程序。这些小程序可以增强网页的功能,提供交互性,比如动态图形、动画、游戏甚至在线聊天等。本教程将带你...

    java applet 简单案例

    Java Applet是Java技术在早期Web开发中的一种应用方式,它允许开发者在浏览器中嵌入可执行的小程序,为用户提供动态交互的Web页面体验。这个简单的案例将带你深入理解Java Applet的基础概念、工作原理以及如何创建和...

    JavaApplet与JavaScript

    ### JavaApplet与JavaScript #### 6.1 JavaApplet ##### 6.1.1 JavaApplet概述 **Applet 类层次结构:** JavaApplet 的基础是 `java.applet.Applet` 类,它是从 `java.awt.Panel` 继承而来的一个特殊的图形组件。...

    java Application与java Applet的区别

    相比之下,Java Applet可以直接利用浏览器或Applet Viewer提供的图形用户界面资源,简化了界面设计过程。 六、权限限制与安全考量 Java Application在权限上较为宽松,可以执行读/写文件等操作,而Java Applet受到...

Global site tag (gtag.js) - Google Analytics