`

用JavaWebStart發布SWT

    博客分类:
  • SWT
阅读更多

      要發布一個SWT程序,首先要將SWT程序打包成一個JAR文件,因為SWT程序用到了外部的JAR包,所以在打包的時候需要引入外部JAR包。在這一步,試過了很多的方法,總是不成功,在網上搜索了一下,看到這個方面手動處理的資料非常的少,大部分都是介紹說裝一個fat-jar插件,然後用插件自動處理。在我試驗了N次后,最後把要用到的外部JAR包,全解壓在自己項目的JAR包中后,解壓到JAR包的根目錄就好,終於可以成功運行了。

      接下來就是發布SWT程序了,用JavaWebStart發布SWT程序很簡單,需要學習的內容就只有jnlp文件的編寫。下面具體看一下發布的步驟:


1.建立一個web項目, 在web項目根目錄中加入一個jnlp文件。比如:

 

<?xml version="1.0" encoding="UTF-8"?> 
<!--codebase 属性指出搜索应用程序资源的顶级URL,下面的icon/jar元素都是以这个URL为基本.--> 
<jnlp codebase="http://127.0.0.1:8081/webstart">  
    <information> 
        <!-- 在"开始"-"运行"菜单中输入"javaws"或"javaws -viewer"启动Web Start,会看到客户端已经安装的webstart应用程序--> 
        <!-- title :应用程序标题 vendor:供应商 title/vendor 元素必须,会显示在用"javaws -viewer"命令 打开的应用程序缓存查看器(Java Application Cache Viewer)中-->
      <title>HelloWorld</title> 
        <vendor>Lively Corporation</vendor> 
        <description>HelloWorld Test Example for WebStart.</description> 
        <!--homepage :存放有关应用程序的相关文档的URL,如help文件等,仅仅是description作用-->
        <homepage href="http://127.0.0.1:8081/webstart/index.html"/> 

        <!--icon 指定图标会显示在应用程序缓存查看器中,在查看器中新建webstart快捷方式到桌面时也会显示为快捷方式图标, 只支持GIF/JPEG格式,其它格式无效--> 

        <icon href="./images/logo.jpg"/> 

        <!--splash 在sun的文档中提到会出现在webstart启动时的闪屏中,不过可能由于速度问题,我没有观察到--> 

        <icon kind="splash" href="./images/logo.jpg"/> 
        <!-- 允许离线启动,可以使用javaws -offline命令--> 
        <offline-allowed/> 
    </information> 
    <resources> 
        <!-- 指定客户端需要安装的j2se版本,下面指定为1.5+,如果版本是1.4,在链接此jnlp文件时会提示更新j2se版本--> 
        <j2se version="1.5+"/> 
        <!-- 指定要下载到本地的jar文件(注意,所有的文件都需要打包才能够下载),可以包含一些资源文件,如icons/configuration files,可以使用getResource方法取得--> 
        <jar href="./jar/jws/helloworld.jar"/> 
    </resources> 
    <!--application-desc 必须,指定webstart启动时执行jar文件中的哪个类--> 
    <application-desc main-class="jws.HelloWorld"/>  </jnlp>

 2.在web項目中加入要發布的SWT程序的JAR包。路徑要與jnlp中寫的相符,如果有圖片要在項目中加入響應的目錄和圖片

 

 3.在web項目中寫一個頁面。比如:index.html

<html>
    <body>
        <a href="HelloWorld.jnlp">HelloWorld</a>
    </body>
</html>

 

      完成以上三步,啟動tomcat,在瀏覽器中輸入http://localhost:8080/webstart/index.html ,點擊HelloWorld超鏈接,將啟動JavaWebStart,運行應用程序。

 

此時程序會提示發成意外異常。大概是個java.lang.reflect.InvocationTargetException異常

 

      本來是沒有問題的,如果要發布的程序是純JAVA程序的話,按上面做就行了。但是這裡不行,原因是SWT程序需要調用操作系統的窗口小部件(widget)。所以這裡需要訪問客戶端本地資源。

下面來修改前面的代碼。

 

1.首先修改jnlp文件,在 <information>元素後面,<resources>元素前面加入一個<security>元素。

 <security>
     <all-permissions/>
 </security>

 

使要發布的程序可以訪問本地資源。

 

2.由於JavaWebStart沙箱的限制,要訪問本地資源,就必須給要發布的JAR包簽名。

 

簽名目的:
        为了使Applet或者Java Web Start程序能够访问客户端本地资源,需要对Applet或者JWS程序jar包进行数字签名,之后客户端打开Applet或者JWS程序的时候会提示是否允许该程序访问本地资源,用户如果要用你的程序,当然只能选择OK了。这样你的程序就能按照某种访问权限来访问客户机的本地资源了。

签名步骤:
        1.将程序打成jar包。
            这个我就不多说了,用eclipse,netbeans等开发工具很方便就能打包的。

        2.用keytool命令生成.store文件。
            在任意文件夹下建立一个keytool.bat文件,输入
     
              keytool -genkey -keystore xxx.keystore -alias xxx -validity 3650 

            保存,双击执行。将在当前目录下生成一个xxx.keystore文件, -alias后接的是别名,-validity后面接的是该证书有效天数,这里3650表示10年。(用这个证书签名的程序10年内有效)。

        3.用jarsigner程序对jar包进行签名。
           新建jarsinger.bat文件,输入

            jarsigner -keystore xxx.keystore helloworld.jar xxx

            保存,双击执行,helloworld.jar就被签名了。  

 

      經過以上兩步修改后,就可以發布你的SWT程序。現在在瀏覽器中輸入http://localhost:8080/webstart/index.html 點擊HelloWorld超鏈接,運行應用程序,此時JavaWebStart程序管理器會提示是否信任程序,直接點擊運行就可以了。

到此一個SWT程序就發布完畢了。

分享到:
评论

相关推荐

    JavaWebStart

    JavaWebStart.rarJavaWebStart.rarJavaWebStart.rar

    利用 Java Web Start发布你用java程序

    JWS 是作为 JSR-56 的一部分而创建的,目的是提供一种方法来分发在客户端上的 JVM 中运行的 Java 应用程序

    ( javawebstart部署swing和rcp相关资料.txt )

    javawebstart 所需要的签名相关

    使用JavaWebStart部署JRuby应用

    这篇文章基于一个简单的应用,该应用使用JRuby和Swing实现了一个简单的ObjectSpace浏览器。Ruby的ObjectSpace特性提供了一种方式来访问系统中所有对象。例如,我们可以这样打印所有使用中的字符串:ObjectSpace.each...

    基于JavaWebStart技术的应用程序在工业自动化中的实现.kdh

    基于JavaWebStart技术的应用程序在工业自动化中的实现.kdh

    21天学通java6(高清第五版)

    第2周介绍Java类库,包括向量、堆栈、映射、散列表和位组等数据结构,以及Swing组件、布局管理器和JavaWebStart等;第3周介绍高级主题,包括输入和输出、对象序列化、通过Internet进行通信、使用数据库、XML、Web...

    youAdmin-开源

    youAdmin将为osCommerce建立一个客户端。 它具有友好的JAVA Swing GUI,将通过JavaWebStart技术启动。 youAdmin首先将具有添加,修改和删除产品的能力。 进一步,youAdmin将能够编辑订单和自定义

    java web start教程

    主要介绍web star概念做等,重要介绍了一个详细的开发步骤!

    UsingJavaWebStartInJDeveloper

    Java Web Start 是由 SUN 公司创建的一种新的应用程序部署技术。JDeveloper 支持基于 XML 的 JNLP (Java Network Launching Protocol) 定义,Java Web Start 技术是建立在 JNLP 基础之上的。在 JDeveloper 中用 Java...

    JWS java web start

    java web start 教程 关于一些java web start的知识的ppt

    jnlp 新手开发把手教

    jnlp开发手把手教,特别适合新接触jnlp的开发着参考,根据步骤能够自己开发

Global site tag (gtag.js) - Google Analytics