2013-10-22 6 views
6

द्वारा हस्ताक्षरित जेएनएलपी लॉन्च करते समय "जेएनएलपीएसिंगिंग अपवाद [लॉन्च फ़ाइल पर हस्ताक्षर करने में विफल] प्राप्त करना जारी रखें" हमने this ऑरैक गाइड का पालन करके हमारी जेएनएलपी फाइलों पर हस्ताक्षर करने का निर्णय लिया है। चूंकि हमारे पास अलग जेएनएलपी हैं, इसलिए हम दूसरे दृष्टिकोण के लिए गए (जेएनएलपी टेम्पलेट के साथ एक जेएआर फाइल पर हस्ताक्षर करना)।टेम्पलेट

यहाँ कोड हम टेम्पलेट में निकाली गई है:

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="*" href="*"> 
    <information> 
    <title>*</title> 
    <vendor>My vendor</vendor> 
    <description>My description</description> 
    <icon href="splash.jpg" kind="splash" width="700" height="400" size="115258"/> 
    <offline-allowed /> 
    <shortcut> 
     <menu submenu="My submenu"/> 
    </shortcut> 
    </information> 

    <security> 
    <all-permissions/> 
    </security> 

    <resources locale="en es ja"> 
    <j2se version="1.6+" initial-heap-size="128m" max-heap-size="384m" href="http://java.sun.com/products/autodl/j2se"/> 
    <jar href="myjar.jar" main="true" download="lazy" part="core" size="*"/> 
    <jar href="lib/commons-lang-2.6.jar" download="lazy" part="commons" size="297085"/> 
    ... 
    <jar href="lib/trident-6.0.jar" download="lazy" part="core" size="114496"/> 
    <property name="jnlp.myProperty" value="*"/> 
    <property name="log4j.configuration" value="*"/> 
    </resources> 

    <application-desc main-class="com.mycom.myapp.MyClass"> 
    </application-desc> 
</jnlp> 

... और यहाँ JNLPs हम वास्तव में उपयोग कर रहे हैं में से एक है:

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" codebase="http://mylocation.mycom.com/jnlp/myapp/" href="myapp.jnlp"> 
    <information> 
    <title>My App - Production version</title> 
    <vendor>My vendor</vendor> 
    <description>My description</description> 
    <icon href="splash.jpg" kind="splash" width="700" height="400" size="115258"/> 
    <offline-allowed /> 
    <shortcut> 
     <menu submenu="My submenu"/> 
    </shortcut> 
    </information> 

    <security> 
    <all-permissions/> 
    </security> 

    <resources locale="en es ja"> 
    <j2se version="1.6+" initial-heap-size="128m" max-heap-size="384m" href="http://java.sun.com/products/autodl/j2se"/> 
    <jar href="myjar.jar" main="true" download="lazy" part="core" size="4189501"/> 
    <jar href="lib/commons-lang-2.6.jar" download="lazy" part="commons" size="297085"/> 
    ... 
    <jar href="lib/trident-6.0.jar" download="lazy" part="core" size="114496"/> 
    <property name="jnlp.myProperty" value="http://mylocation.mycom.com/jnlp/myapp/MyApp.properties"/> 
    <property name="log4j.configuration" value="http://mylocation.mycom.com/jnlp/myapp/log4j.xml"/> 
    </resources> 

    <application-desc main-class="com.mycom.myapp.MyClass"> 
    </application-desc> 
</jnlp> 

सूचना है कि मैं वाइल्डकार्ड का इस्तेमाल किया (*) के लिए:

  1. टैग jnlp में codebase विशेषता
  2. टैग jnlp में href विशेषता
  3. शीर्षक टैग के अंदर
  4. जार टैग
  5. दो गुण

मैं उपयुक्त JNLP-INF फ़ोल्डर के अंदर टेम्पलेट डाल के मूल्य में विशेषता आकार (उचित के साथ सामग्री नाम भी) और हमने उसके बाद जेएआर पर हस्ताक्षर किए। हालांकि, हम निम्न संदेश के साथ एक JNLPSigningException बार आ रही है:

लांच फ़ाइल पर हस्ताक्षर करने को मान्य करने में विफल। हस्ताक्षरित संस्करण डाउनलोड संस्करण से मेल नहीं खाता है।

किसी को भी मैं क्या याद आ रही है की एक विचार है?

+0

उन लोगों के लिए, ऐसा लगता है कि संपत्ति मूल्य में वाइल्डकार्ड समर्थित नहीं है, यहां तक ​​कि jnlp के साथ भी। उपसर्ग। मुझे यकीन नहीं है कि ओरेकल डेवलपर्स को एप्लिकेशन को गतिशील पैरामीटर को सुरक्षित रूप से पास करने की अनुमति देने की योजना बना रहा है। यह मुझे पागल कर रहा है! https://bugs.openjdk.java.net/browse/JDK-8042664 – JeffG

उत्तर

0

मुझे विश्वास है कि यह टैग में वाइल्डकार्ड से नाखुश है। मैं इस सटीक स्थिति में भाग गया। परीक्षण उद्देश्यों के लिए, मैंने वाइल्डकार्ड हटा दिया और अन्य मूल्य को जाम कर दिया। ठीक काम किया - लेकिन यह अस्वीकार्य समाधान है क्योंकि यह संपत्ति का पूरा बिंदु है!

+0

धन्यवाद निक। मैं कोशिश करूँगा लेकिन, जैसा कि आप कहते हैं, यह बिंदु खो देता है क्योंकि मुझे अपनी कॉन्फ़िगरेशन में लचीलापन रखने की आवश्यकता है। मैं सोच रहा था कि क्या आपने एक या अधिक वाइल्डकार्ड का इस्तेमाल उसी कारण से किया था, जिसका इस्तेमाल मैंने किया था ... शायद जब टेम्पलेट को पार्स किया जा रहा हो, तो कुछ वाइल्डकार्ड ठीक से मेल खाते हैं, लेकिन अन्य बस जगह से बाहर हैं – Yego

+0

मेरी जंगली हंस का पीछा खुशी से समाप्त हो गया अभी व। मेरी मूल समस्या जेएनएलपी में संपत्तियों को स्थापित करने में सक्षम नहीं थी। मैं हस्ताक्षरित जार की सड़क पर गया और मूर्खतापूर्ण जेएनएलपी टेम्पलेट बना रहा। वह एक मृत अंत था - क्योंकि स्पष्ट रूप से वाइल्डकार्ड गुणों में काम नहीं करता है। मैंने टेम्पलेट को तोड़ दिया और मेरी मूल जेएनएलपी फाइल पर वापस चला गया और संपत्ति नामों को "jnlp" में बदल दिया। उपसर्ग - और इस तरह के गुणों को पढ़ने के लिए मेरे कोड को बदल दिया। यह मेरे लिए काम किया। – Nick

3

मैं इस एक ही मुद्दा था, लेकिन यह पता चला कि मेरी src/JNLP-INF/APPLICATION.JNLP फ़ाइल पर हस्ताक्षर किए .jar फ़ाइल (एक हस्ताक्षरित jnlp फ़ाइल के रूप में इस्तेमाल) में शामिल application.jnlp फ़ाइल वेब अनुप्रयोग <applet> टैग में परिभाषित में इस्तेमाल किया जा रहा से अलग था। एक बार मैंने उन्हें वही बना दिया, त्रुटि दूर चली गई।

  • Signed JNLP Files
  • : .jar फ़ाइल के भीतर हस्ताक्षर किए JNLP फ़ाइलों का उपयोग सावधानी के

    वर्ड, फ़ाइल बिल्कुल JNLP-INF/APPLICATION.JNLP नामित किया जाना के रूप में यह jnlp मैच के लिए एक टेम्पलेट के रूप में प्रयोग किया जाता आवेदन के भीतर बुलाया जा रहा है की जरूरत है

0

मुझे एक स्व-हस्ताक्षरित युद्ध पर जावा 1.7.0_45 पर यह समस्या थी, समाधान jnlp के बिना गुणों को निकालना था। उपसर्ग। आपके मामले में निकालने का प्रयास करें:

<property name="log4j.configuration" value="http://mylocation.mycom.com/jnlp/myapp/log4j.xml"/> 
0

एक डिबग टिप के रूप में, मैं, और पाया है कि चल javaws -verbose jnlp फ़ाइल का url कमांड लाइन से, आप कंसोल टैब में अतिरिक्त विवरण देता है।