Pregunta

Estoy tratando de implementar una aplicación que utiliza el nativa aplicación de Tibrv a través de la TibrvJ biblioteca utilizando Java Webstart .

Me ha empaquetado por todas las ventanas dlls en el interior c:\tibco\tibrv\bin en un archivo JAR y se han añadido estos para el elemento nativelib en el archivo JNLP .

Yo esperaba que WebStart tomaría los DLL archivos de thetibco-7.5.1-nativelibs.jar archivo y permitir que sean cargados a través de System.loadLibrary que se llama a partir Tibrv.open(). Sin embargo, no parece que quieren que funcione correctamente.

Mi JNLP miradas de archivo como este:

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

Se inicia la aplicación, pero tan pronto como se realiza una llamada a TIB abierta, entonces se cae a pedazos con un error a lo largo de las líneas de:

  • [excepción de la raíz es TibrvException [error = 22, mensaje = Versión desajuste: libtibrv versión 7.4 no coincide con la versión de tibrvj biblioteca compartida 7.5]]

  • TibrvException [error = 901, mensaje = Biblioteca no encontrado: tibrvj]]

Los usuarios tienen un variedad de Tib instalaciones ya en sus PC de Tib 7,2 hasta 7,5. La aplicación Webstart sólo funciona correctamente en una máquina con 7,5 instalada que coincide con el archivo JAR dentro del paquete. Por lo tanto, no parece hacer nada con el frasco nativelib.

Me gustaría evitar tener que desplegar 3 versiones de la aplicación de inicio web para las diferentes versiones de Tib que los usuarios han instalado.

¿Alguien más ha conseguido que esta combinación de TibrvJ y Webstart de trabajo?

¿Fue útil?

Solución

Me las he arreglado para que funcione. El problema es que la llamada a System.loadLibrary al utilizar Webstart no se carga en las dependencias de la biblioteca especificada, incluso si han sido empaquetados en un frasco nativelib.

http://bugs.sun.com/bugdatabase/view_bug. hacer? bug_id = 6191612 para obtener más información.

Para solucionar este problema, es necesario cargar explícitamente todas las dependencias en el orden correcto. También es necesario poner cada biblioteca DLL en su propio archivo jar.

Así que para usar TibrvJ nativa es necesario hacer las siguientes llamadas antes de cualquier llamada a Tibrv.Open.

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

Los días felices!

Otros consejos

creo que haya detectado un problema con Webstart.

Hace algunos años, tuve una aplicación Webstart utilizando Java 3D que no trabajó en los Macs. Con el tiempo me di cuenta de que todos los Macs algunas de ellas con una versión antigua de Java 3D instalado, y que la versión ya instalada se utilizó sobre la versión más reciente que había incluido en el archivo JNLP en mi. Sus sonidos problema casi exactamente como este, por lo que podría muy bien ser el mismo problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top