代码之家  ›  专栏  ›  技术社区  ›  pjp

使用TIBCO本地LIBS的JavaWebScript

  •  6
  • pjp  · 技术社区  · 15 年前

    我正在尝试部署使用 本地的 通过 蒂布罗杰 图书馆利用 爪哇WebScript .

    我把所有的窗户都打包了 DLL 从内部 c:\tibco\tibrv\bin 将这些添加到 nativelib 元素在 JNLP 文件。

    我希望webstart 动态链接库 文件来自 tibco-7.5.1-nativelibs.jar 文件并允许通过 System.loadLibrary 从哪来的 Tibrv.open() . 但它似乎不想正常工作。

    我的 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,它就会崩溃,并出现以下错误:

    • [根异常为tibrvexception[错误=22,消息=版本不匹配:libtibrv版本7.4与tibrvj共享库7.5的版本不匹配]]

    • tibrvexception[错误=901,消息=找不到库:tibrvj]]

    用户有一个 品种 从TIB 7.2到7.5,已经安装在个人电脑上的TIB。WebStart应用程序只能在安装了7.5的机器上正常工作,该机器与包中的JAR文件匹配。所以它似乎与nativelib jar没有任何关系。

    我想避免为用户安装的不同版本的TIB部署3个版本的WebStart应用程序。

    其他人有没有设法得到 蒂伯维奇 网络启动 工作?

    2 回复  |  直到 15 年前
        1
  •  8
  •   pjp    15 年前

    我已经设法使它起作用了。问题是电话 System.loadLibrary 使用时 网络启动 不加载指定库的依赖项,即使它们已打包到NativeLib JAR中。

    http://bugs.sun.com/bugdatabase/view_bug.do?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");
    

    快乐的日子!

        2
  •  0
  •   Kees Kist    15 年前

    我想你在webstart上遇到了一个问题。

    几年前,我有一个使用Java 3D的WebScript应用程序,它在Mac上不起作用。最终,我发现所有的MACS都安装了一个旧版本的Java 3D,并且已经安装的版本被应用在我的JNLP文件中包含的更新版本中。你的问题听起来差不多就是这样,所以很可能是同一个问题。