把jnlp文件以applet的方式嵌入到網頁中運行


在進行 worldwind開發時,程序獨立運行沒有什么難度,但是要把applet版的worldwind嵌入到網頁中,卻整整搞了兩天。但還好,總算是搞出來了。總結了之后,最重要的問題其實是:如何把jnlp嵌入到網頁中。現總結如下:

一、以下內容參考的是java官網教程:

http://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/embeddingJNLPFileInWebPage.html http://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/createWebStartLaunchButtonFunction.html

看了上面這兩個網頁,弄明白了之后,就不必向下看了,我就是參考上面的教程做的。

 

二、 我的示例

1.請電腦上安裝jdk7(不同操作系統安裝不同版本,我在windows,linux下都試過了,沒有問題)。如果要把jnlp文件下載到本地運行,那么jdk6就可以了,但是,如果要把jnlp嵌入到網

頁中直接運行,則必須是jdk7 。jdk7中包含了java為瀏覽器准備的“java下一代插件” ,有了它jnlp才能嵌入到網頁中運行。

2.新建文件夾,命名為:wwj。

3.確保要嵌入到網頁中的.class或者jar包可以運行,例如,我打了一個jar包,名字為:appletTest.jar,雙擊運行或在終端中運行:java -jar appletTest.jar,沒有問題,程序可以跑起

來。把appletTest.jar運行所需的庫及資源文件,一起放入wwj文件夾。

4.編寫jnlp文件,放入 wwj文件夾。確保jnlp文件沒有問題,可以直接運行,例如,我為appletTest.jar寫了一個jnlp文件,名字為:worldStreet.jnlp,雙擊運行或在終端中運行:javaws

worldStreet.jnlp,沒有問題,程序可以跑起來,跟直接運行appletTest.jar的效果是一樣的。

worldStreet.jnlp文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+">
    <information>
        <title>world street map</title>
        <vendor>summer</vendor>
        <offline-allowed/>
    </information>
    <resources>
        <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/>
       <jar href="worldStreetMap.jar" main="true"/>
        <jar href="worldStreetMap_lib/worldwind.jar"/>
           <jar href="worldStreetMap_lib/jogl.jar"/>
       <jar href="worldStreetMap_lib/gdal.jar"/>
        <jar href="worldStreetMap_lib/gluegen-rt.jar"/>
        <jar href="worldStreetMap_lib/plugin.jar"/>
        </resources>
        <applet-desc
         name="world street applet" main-class="com.summer.applet.WWJAppletMinimal"
         width="800" height="600">
       </applet-desc>
  <update check="background"/>
</jnlp>

5.(1)把wwj文件夾放到某個可以運行的tomcat服務器上,例如我的tomcat服務器地址為:http://summer2:8080/hadoopWebGis4。修改上面的 jnlp文件成為服務器版的jnlp文件,

如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://summer2:8080/hadoopWebGis4/wwj">  //修改的內容在這里:添加了codebase
    <information>
        <title>world street map</title>
        <vendor>summer</vendor>
        <offline-allowed/>
    </information>
    <resources>
        <j2se version="1.5+" href="http://java.sun.com/products/autodl/j2se"/>
       <jar href="worldStreetMap.jar" main="true"/>
        <jar href="worldStreetMap_lib/worldwind.jar"/>
           <jar href="worldStreetMap_lib/jogl.jar"/>
       <jar href="worldStreetMap_lib/gdal.jar"/>
        <jar href="worldStreetMap_lib/gluegen-rt.jar"/>
        <jar href="worldStreetMap_lib/plugin.jar"/>
        </resources>
        <applet-desc
         name="world street applet" main-class="com.summer.applet.WWJAppletMinimal"
         width="800" height="600">
       </applet-desc>
  <update check="background"/>
</jnlp>

 

(2)修改tomcat服務器的配置文件WEB-INF/web.xml,在web-app元素內插入子元素,內容為:

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

 

(3)運行tomcat服務器,在瀏覽器中輸入http://summer2:8080/hadoopWebGis4/wwj/worldStreet.jnlp,彈出下載框,下載該jnlp文件,雙擊運行或在終端運行:javaws

worldStreet.jnlp,運行沒有問題的話,就說明服務器已經配置好了。

6.編寫html文件,把jnlp文件嵌入到該html文件中。

 (1)對jnlp文件中的內容進行base64編碼,保存起來。編碼可在http://www.base64encode.org/上面進行,只是在這個網頁上輸出的編碼字符串后面加 上"Cg=="。例如:在網頁

上編碼輸出的字符串為:  PD94bWw.......gdmVyc2l  , 則再加上 Cg== ,正確的結果應該為  PD94bWw.......gdmVyc2lCg==  

    (2)編寫jsp文件,假設命名為worldStreet.jsp:

<html>
    <title>JWS Test</title>
    <head>
    </head>
    <body>
        <script src="deployJava.js"></script>   //deployJava.js文件可在網上搜索下載得到,是java官方提供的一個工具包,在這里可用於運行applet的工具
        <script>
            var attributes = {width:800,height:600};
            var parameters = {
                jnlp_href : 'worldStreet.jnlp',
                jnlp_embedded :'base64編碼的jnlp文件內容'
            };
                deployJava.runApplet(attributes, parameters, '1.6'); //1.6.0是java版本號,可以根據需要進行修改
</script> worldStreet test!! </body> </html>

  (3)把編寫好的worldStreet.jsp放入tomcat服務器的wwj文件夾中,重啟服務器,在瀏覽器中輸入 http://summer2:8080/hadoopWebGis4/wwj/worldStreet.jsp,稍等一會兒,加載

的過程有點兒慢,就會在網頁中看到結果,我在chrome和搜狗瀏覽器中試過,沒有問題。

 

注意問題:

1. 客戶端機器上一定要裝上jdk7才可以運行網頁上的 jnlp文件。服務器上有沒有jdk7倒不重要。

2. 有時候運行結果出不來,或者結果不對,可以在客戶端機器的終端輸入:javaws -viewer,打開java的高速緩存查看器,清除之前運行過的程序,再次運行。

運行結果:

 

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------------------

題外話:

其實如果已經在客戶端機器上安裝了jdk7,即配置好了java應用程序運行所需的運行時環境,就不需要把jnlp文件嵌入到網頁中了,完全可以直接下載jnlp文件在本機上運行。

嵌入網頁方法2:與上面的方法基本相同,只是把worldStreet.jsp修改成如下:

<html>
    <title>JWS Test</title>
    <head>
    </head>
    <body>
        <script src="deployJava.js"></script><script>
            var url = "http://summer2:8080/hadoopWebGis4/wwj/worldStreet.jnlp";
            deployJava.createWebStartLaunchButton(url, '1.6.0');    //1.6.0是java版本號,可以根據需要進行修改 </script>
        worldStreet test!!
    </body>
</html>

 

運行結果:

點擊上面的"Launch"按鈕,就把jnlp文件下載到本機,在本機上獨立運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM