[置顶] 欢迎您。今天是2023年03月30日。

本教程针对 Eclipse 3.3 (3.2和3.3是有区别的)

使用这个题目,虽然和下面文章题目有些相似,是因为我想不出更好的名字了,所以索性不想了。

实现 JavaWebStart 发布 RCP 程序实际是非常简单的,但对于我来说这个过程是比较漫长的,前前后后研究了N次,也不是我笨,本人自认为还算聪明,悟性较高,关键是为啥呢?!记性不好呗!!

自我检讨一下,我这人比较懒,不喜欢写日志,所以在第一次研究成功之后,就把源码什么的放在一边了,又接着研究其它东西了,没有记录起来,等到下次用的时候,都忘了,正所谓“好记性不如烂笔头!”,我下定决心以后经常写写“博博”什么的!!好了,言归正传!

第一步 学习别人的

先看《使用 WebStart 发布 RCP 应用程序

为啥让你先看这个呢?

  1. 还是得说我这人比较懒。
  2. 人家的内容我在复制粘贴到我的文章不就成了剽窃了,所以我不干。
  3. 人家的文章写的是很不错,但是针对的是 Eclipse 3.2。
第二步 完善自己的

1. 使用 keytool 命令生成数字签名:

C:\j2sdk1.4.2_16\bin\keytool -genkey -alias Foreworld.Net -keypass 123456 -storepass 123456 -keystore Foreworld.Net

2. 打包并进行数字签名:

这里的区别是需要用 Eclipse 的命令参数方式进行打包,否则打包不成功。

解决方法:修改 Eclipse 3.3 的启动方式,创建一个 Eclipse 3.3 的快捷方式,在目标中输入:

D:\MyEclipse-6.0M1\eclipse\eclipse.exe -vm "C:\j2sdk1.4.2_16\bin\javaw.exe"

接下来,双击快捷方式,按照教程开始打包。(在此必须注意中文文件名是不能数字签名的,如果项目中有文文件名的必须改成英文,否则会在后面的运行过程中出现无法验证数字签名的问题)

3. 修改主JNLP文件:

    <?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://localhost:8081/jws/" href="rss2.jnlp">

  <information>
    <title>RSS聚合浏览器 Ver1.0</title>
    <vendor>黄鑫 foreworld@vip.qq.com</vendor>
    <description>RSS聚合浏览器 Ver1.0</description>
    <offline-allowed></offline-allowed>
    <homepage href="http://www.foreworld.net/" />
    <icon href="icon16x16.gif" />
    <icon href="mylogo.gif" kind="splash" />
  </information>
  
  <security>
    <!-- 设置此RCP应用对文件系统进行完全的访问权限 -->
    <all-permissions></all-permissions>
  </security>
  
  <!-- 设置此应用程序的启动类,RCP应用总是由此类来引导启动 -->
  <application-desc main-class="org.eclipse.equinox.launcher.WebStartMain">
    <!-- 这里可以设置应用程序启动时所要传递的参数,与eclipse.exe所使用的参数类似 -->
    <argument>-nosplash</argument>
  </application-desc>
  
  <resources>
    <!-- 指定此应用程序所使用的JRE版本 -->
    <j2se version="1.4+" />
    <!-- 指定启动类所在的Jar包,发布RCP应用时总是要下载此Jar包 -->
    <jar href="plugins/org.eclipse.equinox.launcher_1.0.0.v20070606.jar" />
    <!-- 这里设置扩展配置文件的地址,对于JWS管理器来说,一个扩展配置文件即对应一个库,主应用程序可以使用多个库来完成特定的功能。扩展配置文件也是可以再包含扩展配置文件的,即可以递归使用 -->
    <extension name="Foreworld RSS2 Feature" href="features/net.foreworld.rss2.feature_1.0.0.v200905231119.jnlp" />
    <!-- 设置RCP应用启动时所要运行的产品Id,与config.ini中的配置相同 -->
    <property name="osgi.splashPath" value="platform:/base/plugins/net.foreworld.rss2" />
    <property name="eclipse.product" value="net.foreworld.rss2.product" />
    <property name="osgi.bundles" value="org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start,org.eclipse.core.runtime@start" />
    <property name="osgi.bundles.defaultStartLevel" value="4" />
    <!-- 这里设置RCP应用程序的工作空间目录,与普通RCP应用中config.ini的配置项类似 -->
    <property name="osgi.instance.area" value="@user.home/RSS聚合浏览器 Ver1.0" />
    <!-- 设置RCP应用的配置文件目录 -->
    <property name="osgi.configuration.area" value="@user.home/RSS聚合浏览器 Ver1.0" />
  </resources>

</jnlp>

其中要修改的地方除了 codebase 路径外,还需修改 net.foreworld.rss2.feature_1.0.0.v200905231119.jnlp,将其修改为打包生成的 features 目录下的 jnlp 文件名。

4. 配置好你的 tomcat ,直接点击主 jnlp 文件或者在地址栏里输入 jnlp 路径,就可以运行了。

其他闲话不说,完毕收工。

您可能也喜欢

今天给RCP打包测试,遇到了以前的遗留问题,就是打包后配置文件丢失,导致一些功能实现不了,从而用了硬编码实现,今天闲来无事,偶然间把问题解决了。以前用的配置文件格式是ini的,在查看了几个配置文件都是properties格式能打包进去后,我也把ini改成了properties,竟然成功。呵呵~爽啊~

二维码
摄像头