2009-09-09 19 views
6

Tôi cố gắng để triển khai một ứng dụng sử dụng mẹ đẻ thi hành Tibrv qua TibrvJ thư viện sử dụng Java Webstart.Java Webstart với Tibco Native Libs

tôi đã đóng gói lên tất cả các Windows dlls từ bên c:\tibco\tibrv\bin thành một file Jar và đã thêm những yếu tố để các nativelib trong JNLP tập tin.

Tôi đã hy vọng rằng webstart sẽ lấy dll tập tin từ tập tin tibco-7.5.1-nativelibs.jar và cho phép họ được nạp qua System.loadLibrary được gọi là từ Tibrv.open(). Tuy nhiên nó dường như không muốn hoạt động đúng.

My JNLP tập tin trông như thế này:

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

Các ra mắt ứng dụng nhưng ngay sau khi một cuộc gọi được thực hiện để mở Tib sau đó nó sụp đổ với một lỗi dọc theo dòng:

  • [Ngoại lệ gốc là TibrvException [error = 22, message = Phiên bản không khớp: libtibrv phiên bản 7.4 không khớp với phiên bản của thư viện được chia sẻ tibrvj 7.5]]

  • TibrvException [lỗi = 901, message = Thư viện không tìm thấy: tibrvj]]

Người sử dụng có nhiều của Tib cài đặt sẵn trên máy tính của họ từ Tib 7.2 thông qua 7,5. Ứng dụng Webstart chỉ hoạt động chính xác trên một máy có cài đặt 7.5 phù hợp với tệp Jar bên trong gói. Vì vậy, nó không xuất hiện để làm bất cứ điều gì với các jar nativelib.

Tôi muốn tránh phải triển khai 3 phiên bản của ứng dụng khởi động web cho các phiên bản Tib khác nhau mà người dùng đã cài đặt.

Có ai khác đã quản lý kết hợp này của TibrvJWebstart hoạt động không?

Trả lời

8

Tôi đã cố gắng làm cho nó hoạt động. Vấn đề là cuộc gọi đến System.loadLibrary khi sử dụng Webstart không tải trong các phụ thuộc của thư viện được chỉ định ngay cả khi chúng đã được đóng gói thành một bình nativelib.

Xem http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6191612 để biết thêm thông tin.

Để giải quyết vấn đề này, cần phải tải xuống tất cả các phụ thuộc theo đúng thứ tự. Nó cũng là cần thiết để đặt mỗi thư viện dll vào tập tin jar của riêng mình.

Vì vậy, để sử dụng TibrvJ bản địa, bạn cần thực hiện các cuộc gọi sau đây trước khi có bất kỳ cuộc gọi nào tới Tibrv.Open.

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

Ngày hạnh phúc!

0

Tôi nghĩ bạn đã gặp sự cố với Webstart.

Một vài năm trước, tôi đã có một ứng dụng Webstart sử dụng Java 3D không hoạt động trên máy Mac. Cuối cùng tôi thấy rằng tất cả các máy Mac một số với một phiên bản cũ của Java 3D được cài đặt, và phiên bản đã được cài đặt đã được sử dụng trên phiên bản mới hơn mà tôi đã đưa vào trong tệp JNLP của tôi. Vấn đề của bạn gần như chính xác như thế này, vì vậy nó rất có thể là cùng một vấn đề.

+0

Bạn đã cố gắng khắc phục sự cố chưa? – pjp