2009-09-09 19 views
6

que estoy tratando de implementar una aplicación que utiliza el nativa implementación de Tibrv a través de la biblioteca deTibrvJ usando Java Webstart.Java Webstart con Tibco nativos Liberaciones

He empaquetado de seguridad de todos los archivos DLL de Windows desde el interior c:\tibco\tibrv\bin en un archivo JAR y han añadido estos para el elemento nativelib en el archivo JNLP .

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

Mi JNLP archivo es como sigue:

<?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 haga una llamada para abrir TIB a continuación se desmorona con un error a lo largo de las líneas de:

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

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

Los usuarios tienen una variedad de Tib ya en sus PC de Tib 7,2 instalaciones a través de a 7,5. La aplicación Webstart solo funciona correctamente en una máquina con 7.5 instalado que coincide con el archivo Jar dentro del paquete. Por lo tanto, no parece hacer nada con el jar nativelib.

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

nadie ha conseguido que esta combinación de TibrvJ y Webstart de trabajo?

Respuesta

8

He logrado que funcione. El problema es que la llamada al System.loadLibrary al utilizar Webstart no se carga en las dependencias de la biblioteca especificada, incluso si se han empaquetado en un contenedor nativelib.

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

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

Para utilizar TibrvJ nativo debe realizar las siguientes llamadas antes de cualquier llamada al Tibrv.Open.

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

Happy Days!

0

Creo que ha tenido un problema con Webstart.

Hace algunos años, tenía una aplicación Webstart que utilizaba Java 3D que no funcionaba en Mac. Eventualmente encontré que todas las Macs algunas con una versión anterior de Java 3D instalada, y que la versión ya instalada se usaba sobre la versión más nueva que había incluido en el archivo JNLP. Su problema suena casi exactamente así, así que podría ser el mismo problema.

+0

¿Se las arreglaron para solucionarlo? – pjp

Cuestiones relacionadas