2009-09-09 20 views
6

मैं TibrvJजावा Webstart का उपयोग कर पुस्तकालय के माध्यम से Tibrv की देशी कार्यान्वयन का उपयोग करता है एक आवेदन को तैनात करने की कोशिश कर रहा हूँ के साथ जावा Webstart।TIBCO मूल निवासी Libs

मैं एक जार फ़ाइल में अंदर c:\tibco\tibrv\bin से विंडोज DLLs के सभी पैक किया है और JNLP फ़ाइल में nativelib तत्व करने के लिए इन जोड़ लिया है।

मुझे उम्मीद थी कि webstart tibco-7.5.1-nativelibs.jar फ़ाइल से dll फ़ाइलों लेते हैं और उन्हें System.loadLibrary जो Tibrv.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]]

उपयोगकर्ताओं को एक किस्म है Tib प्रतिष्ठानों Tib 7.2 से अपने पीसी पर पहले से ही 7.5 के माध्यम से की। वेबस्टार्ट एप्लिकेशन केवल 7.5 स्थापित के साथ मशीन पर सही ढंग से काम करता है जो पैकेज के अंदर जार फ़ाइल से मेल खाता है। तो यह nativelib जार के साथ कुछ भी नहीं प्रतीत होता है।

मैं उपयोगकर्ताओं द्वारा स्थापित Tib के विभिन्न संस्करणों के लिए वेब स्टार्ट एप्लिकेशन के 3 संस्करणों को तैनात करने से बचना चाहता हूं।

किसी और काम कर WebstartTibrvJ और के इस संयोजन पाने में कामयाब रहे है?

उत्तर

8

मैं इसे काम करने में कामयाब रहा हूं। समस्या यह है कि System.loadLibrary पर कॉल का उपयोग करते समय वेबस्टार्ट निर्दिष्ट लाइब्रेरी की निर्भरताओं में लोड नहीं होता है, भले ही उन्हें नेटिवेलिब जार में पैक किया गया हो।

अधिक जानकारी के लिए http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6191612 देखें।

इस समस्या को हल करने के लिए सही क्रम में सभी निर्भरताओं को विभाजित करना आवश्यक है। प्रत्येक डीएलएल पुस्तकालय को अपनी जार फ़ाइल में रखना भी आवश्यक है।

तो मूल TibrvJ का उपयोग करने के लिए आपको Tibrv.Open पर किसी भी कॉल से पहले निम्नलिखित कॉल करने की आवश्यकता है।

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

मुबारक दिन!

0

मुझे लगता है कि आपको वेबस्टार्ट के साथ कोई समस्या आई है।

कुछ साल पहले, मेरे पास जावा 3 डी का उपयोग कर वेबस्टार्ट एप्लिकेशन था जो मैक पर काम नहीं करता था। आखिर में मैंने पाया कि कुछ मैक जावा 3 डी के पुराने संस्करण के साथ स्थापित हैं, और पहले से स्थापित संस्करण का उपयोग उस नए संस्करण पर किया गया था जिसे मैंने अपनी जेएनएलपी फ़ाइल में शामिल किया था। आपकी समस्या लगभग इस तरह लगती है, इसलिए यह एक ही समस्या हो सकती है।

+0

क्या आपने इसे ठीक करने का प्रबंधन किया था? – pjp