`

用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.doc可能包含了关于如何创建、配置和部署JNLP文件的详细指南,以及使用JavaWebStart的注意事项和最佳实践。 总之,JavaWebStart是一个强大的技术,它简化了Java应用程序的分发和更新流程,但...

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

    ### 利用Java Web Start发布Java程序的关键知识点 #### 一、Java Web Start (JWS) 概览 ...总之,Java Web Start 是一个值得深入学习和使用的强大工具,尤其适合那些希望快速部署跨平台Java应用程序的开发者。

    使用JavaWebStart部署JRuby应用

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

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

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

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

    下面将深入探讨如何使用keytool和jarsigner工具进行签名以及部署Swing和RCP应用的过程。 #### 使用Keytool创建密钥库和证书 1. **创建密钥库**:首先,使用`keytool`命令创建一个密钥库。在命令行中输入: ``` ...

    jnlp 新手开发把手教

    JNLP 是一种通过网络部署和发布 Java 程序的新技术,具有安全、稳定、易维护、易使用的特点。它可以用来发布 Application,也可以用来发布 Applet。开发者可以按照上述步骤,搭建支持 JWS 的 Web 站点,并部署应用...

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

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

    javascript经典特效---检测IE所装插件.rar

    每个插件都有其对应的ActiveXObject字符串,比如Java的为"JavaWebStart.JavaWebStart.1.0",Silverlight的为"Microsoft.Silverlight ActivXControl.1"。 5. **兼容性问题**:需要注意的是,这种插件检测方法仅适用...

    JWS java web start

    Java Web Start(JWS)是SUN公司推出的一项技术,用于通过Web来部署和发布Java应用程序。这项技术在Java 1.4版本中被引入,它会在安装时自动安装,但在1.4之后的版本中,你需要手动找到安装路径下的`javaws.exe`来...

    java web start教程

    Java Web Start(JWS)是SUN公司推出的一项技术,用于通过Web来部署和发布Java应用程序,无论是Application还是Applet。这项技术在初次运行时会下载程序,之后的版本更新和维护都由JWS自动处理,极大地简化了客户端...

    maze_java_balloon8iy_

    开发者可以通过分析源码来了解如何用Java实现3D图形,如何设计和实现迷宫生成算法,以及如何在浏览器环境中部署和运行Java应用程序。对于Java初学者和希望提升游戏开发技能的开发者来说,这是一个非常有价值的学习...

    Tatool: A Java-based open-source programming framework for psychological studies

    JavaWebStart功能允许研究人员通过网络运行实验,这为远程数据收集提供了便利,使得研究可以招募全球范围内的参与者。远程实验运行的便利性对于那些需要大样本量或需要在特定地区获取数据的研究尤为重要。 在使用...

    详细解读Java的串口编程

    Java的串口编程是通过JavaComm和RxTx这两个库来实现的,这两个库分别有其特定的安装和使用方法。 首先,我们来看JavaComm的安装和使用。JavaComm是Java官方提供的串口通信API,但它并不是Java2标准版的组成部分,...

    Deploying Java Web Start Applications on the JBoss Application Server

    本文不会提供完整的Java Web Start使用指南,对于更详尽的信息,请参考Sun Microsystems(现为Oracle)的官方文档:http://java.sun.com/products/javawebstart/。 #### 配置步骤 1. **安装JBoss和Apache Tomcat**...

    Ajax资料

    - **Sun的JavaWebStart技术**:允许应用程序从网络下载并在客户端安全地运行。 - **Microsoft的ClickOnce技术**:提供了一种简单的方法来部署和自动更新桌面应用程序。 - **基于Flash的Flex**:虽然不是纯粹的Ajax...

    基于J2EE的Ajax宝典

    - **Sun的JavaWebStart技术** - 为Java应用程序提供了一个无需安装即可运行的环境。 - 可以离线使用应用程序。 - **Microsoft的ClickOnce技术** - 提供了.NET应用程序的快速部署和自动更新功能。 - 用户可以在不...

    youAdmin-开源

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

Global site tag (gtag.js) - Google Analytics