Frage

Ich versuche, eine Anwendung zu implementieren, die die nativen verwendet Implementierung von Tibrv durch die TibrvJ Bibliothek Java Web Start .

Ich habe alle Windows verpackt bis dlls von innen c:\tibco\tibrv\bin in eine Jar-Datei und haben diese an die nativelib Element in der JNLP Datei hinzugefügt.

Ich hatte gehofft, dass webstart würde die dll Dateien aus thetibco-7.5.1-nativelibs.jar Datei und lassen Sie sie über System.loadLibrary geladen werden, die von Tibrv.open() genannt wird. Allerdings scheint es nicht richtig arbeiten zu wollen.

Ihr JNLP Datei sieht wie folgt aus:

<?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> 

Die Anwendung wird gestartet, aber sobald ein Anruf zu öffnen tib gemacht wird dann fällt sie auseinander mit einem Fehler entlang der Linien von:

  • [Root Ausnahme ist TibrvException [error = 22, message = Versionskonflikt: libtibrv Version 7.4 entspricht nicht Version von tibrvj Shared Library 7.5]]

  • TibrvException [error = 901, message = Bibliothek nicht gefunden: tibrvj]]

Der Anwender hat eine Auswahl von tib Installationen bereits auf ihrem PC aus tib 7.2 bis zu 7.5. Die Webstart Anwendung funktioniert nur auf einer Maschine mit 7.5 installiert, die die JAR-Datei in der Verpackung übereinstimmt. So scheint es nicht etwas mit dem nativelib Glas zu tun.

Ich möchte vermeiden, 3 Versionen der Web-Start-Anwendung für die verschiedenen Versionen von tib einsetzen, dass die Benutzer installiert haben.

Hat jemand es geschafft, diese Kombination zu bekommen von TibrvJ und Webstart zu arbeiten?

War es hilfreich?

Lösung

Ich habe es geschafft, es zum Laufen zu bringen. Das Problem ist, dass der Aufruf von System.loadLibrary bei der Verwendung von Webstart nicht geladen in den Abhängigkeiten der angegebenen Bibliothek, auch wenn sie in ein nativelib Glas verpackt worden war.

Siehe http://bugs.sun.com/bugdatabase/view_bug. tun? bug_id = 6191612 für weitere Informationen.

Um dieses Problem zu umgehen, um es zu explicity Last aller Abhängigkeiten in der richtigen Reihenfolge erforderlich ist. Es ist auch notwendig, jede DLL-Bibliothek in die eigenen JAR-Datei zu setzen.

So nativen TibrvJ zu verwenden, müssen Sie die folgenden Anrufe, bevor irgendwelche Anrufe Tibrv.Open machen.

    System.loadLibrary("msvcr71");
    System.loadLibrary("tibrv");
    System.loadLibrary("tibrvcm");
    System.loadLibrary("tibrvft");
    System.loadLibrary("tibrvcmq");
    System.loadLibrary("tibrvj");

Happy Days!

Andere Tipps

Ich denke, Ihnen ein Problem mit Webstart begegnet sind.

Vor einigen Jahren hatte ich eine Webstart Anwendung Java 3D verwenden, die nicht arbeiten auf Macs haben. Schließlich fand ich, dass alle Macs mit einer alten Version von Java 3D einige installiert ist, und dass bereits installierte Version wurde über die neuere Version verwendet, dass ich in dem in meiner JNLP-Datei enthalten war. Ihr Problem klingt fast genau so, so könnte es sehr gut das gleiche Problem sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top