我正在尝试部署一个使用nativeTibrv 的实施通过TibrvJ图书馆使用Java 网络启动.
我已经把所有的Windows都打包了dlls从内部c:\tibco\tibrv\bin
放入 Jar 文件并将它们添加到nativelib
中的元素JNLP file.
我希望网络启动能够采取dll文件来自tibco-7.5.1-nativelibs.jar
文件并允许它们通过加载System.loadLibrary
这是从调用的Tibrv.open()
。然而它似乎不想正常工作。
My 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>
应用程序启动,但一旦调用打开 tib,它就会崩溃,并出现以下错误:
用户有一个variety他们的 PC 上已安装了从 Tib 7.2 到 7.5 的 Tib。 Webstart 应用程序仅在安装了 7.5 且与包内的 Jar 文件匹配的计算机上才能正常工作。所以它似乎没有对 nativelib jar 做任何事情。
我希望避免为用户安装的不同版本的 Tib 部署 3 个版本的 Web Start 应用程序。
有没有其他人设法得到这个组合TibrvJ and Webstart在职的?
我已经成功让它发挥作用了。问题是调用System.loadLibrary
使用时Webstart不会加载指定库的依赖项,即使它们已打包到 nativelib jar 中。
See https://bugs.java.com/bugdatabase/view_bug?bug_id=6191612 https://bugs.java.com/bugdatabase/view_bug?bug_id=6191612了解更多信息。
为了解决这个问题,有必要以正确的顺序显式加载所有依赖项。还需要将每个dll库放入自己的jar文件中。
因此,要使用本机 TibrvJ,您需要在调用之前进行以下调用Tibrv.Open
.
System.loadLibrary("msvcr71");
System.loadLibrary("tibrv");
System.loadLibrary("tibrvcm");
System.loadLibrary("tibrvft");
System.loadLibrary("tibrvcmq");
System.loadLibrary("tibrvj");
快乐的时光!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)