6

Java Webstartを使用してTibrvJライブラリを介して Tibrv のネイティブ実装を使用するアプリケーションをデプロイしようとしています。

すべての Windows dllを内部からc:\tibco\tibrv\binJar ファイルにパッケージ化し、これらをJNLPファイルのnativelib要素に追加しました。

私は、webstart がファイルからdllファイルを取得し、それを介して tibco-7.5.1-nativelibs.jarそれらをロードできるようにすることを望んでいました。しかし、それは適切に動作したくないようです。System.loadLibraryTibrv.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]]

ユーザーのPC には、Tib 7.2 から 7.5 までのさまざまなTib が既にインストールされています。Webstart アプリケーションは、パッケージ内の Jar ファイルと一致する 7.5 がインストールされたマシンでのみ正しく動作します。そのため、nativelib jar では何もしていないようです。

ユーザーがインストールした異なるバージョンの Tib に対して、3 つのバージョンの Web Start アプリケーションをデプロイする必要がないようにしたいと考えています。

このTibrvJWebstartの組み合わせを機能させることができた人は他にいますか?

4

2 に答える 2

8

私はそれを機能させることができました。問題は、Nativelib jar にパッケージ化されていても、 WebstartSystem.loadLibraryを使用する場合の呼び出しが、指定されたライブラリの依存関係に読み込まれないことです。

詳細については、 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");

幸せな日々!

于 2009-09-10T10:53:26.157 に答える
0

Webstart で問題が発生したと思います。

数年前、Mac では動作しない Java 3D を使用した Webstart アプリケーションがありました。最終的に、すべての Mac に古いバージョンの Java 3D がインストールされていて、JNLP ファイルに含まれていた新しいバージョンよりも、既にインストールされているバージョンが使用されていることがわかりました。あなたの問題はこれとほぼ同じように聞こえるので、同じ問題である可能性が非常に高いです。

于 2009-09-09T16:53:07.817 に答える