【发布时间】:2010-11-26 19:55:33
【问题描述】:
我正在尝试通过 TibrvJ 库使用 Java Webstart 部署一个使用 Tibrv 本机 实现的应用程序。
我已将 c:\tibco\tibrv\bin 内部的所有 Windows dll 打包到一个 Jar 文件中,并将它们添加到 JNLP 文件中的 nativelib 元素中。
我希望 webstart 会从tibco-7.5.1-nativelibs.jar 文件中获取 dll 文件,并允许它们通过从Tibrv.open() 调用的System.loadLibrary 加载。但是它似乎并不想正常工作。
我的 JNLP 文件如下所示:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
<jnlp spec="6.0+"
codebase="http://somewhere:8080/my-gui/application"
href="launch.jnlp">
<information>
<title>My GUI</title>
<vendor>Technology</vendor>
<description>Dashboard</description>
<description kind="short">Dashboard</description>
<icon href="icon/Stocks-128x128.png" />
<offline-allowed />
<shortcut online="true">
<desktop />
<menu submenu="Dashboard" />
</shortcut>
</information>
<security>
<all-permissions />
</security>
<update check="always" policy="prompt-update" />
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"
java-vm-args="-Xmx120M -ea />
<property name="log4j.configuration" value="live/log4j.xml" />
<property name="swing.aatext" value="true" />
<jar href="tibrvj-7.5.1.jar" />
<jar href="dashboard-gui.jar" main="true" />
</resources>
<resources>
<nativelib href="nativelib/tibco-7.5.1-nativelibs.jar" />
</resources>
<application-desc main-class="com.somewhere.Main">
<argument>classpath:/live/client.xml</argument>
<argument>/live/live.properties</argument>
</application-desc>
</jnlp>
应用程序启动,但一旦调用 open tib,它就会崩溃,并出现如下错误:
[根异常是 TibrvException[error=22,message=Version mismatch:libtibrv 7.4 版与 tibrvj 共享库 7.5 版不匹配]]
TibrvException[error=901,message=找不到库:tibrvj]]
用户已经在他们的 PC 上安装了从 Tib 7.2 到 7.5 的各种。 Webstart 应用程序只能在安装了 7.5 且与包内的 Jar 文件匹配的机器上正常工作。所以它似乎对 nativelib jar 没有任何作用。
我想避免为用户安装的不同版本的 Tib 部署 3 个版本的 web start 应用程序。
还有其他人设法让 TibrvJ 和 Webstart 的这种组合工作吗?
【问题讨论】:
标签: java-web-start jnlp tibco