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

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

2012-12-06 10:04 471 查看
原地址: 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 里面,拷过来放到项目里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐