2012-06-05 5 views
7

हम चाहते हैं कि सूचना के लिए जावा 7 के साथ शुरू हुआ (विशेष रूप से के साथ अद्यतन 4), अपने सभी उपयोगकर्ताओं को हमारे Webstart एप्लिकेशन के साथ यह देखने के लिए शुरू कि:जावा 7u4 webstart सुरक्षा अपवाद: कक्षा विश्वास स्तर से मेल नहीं खाता

[14:42:58,422] AWT-EventQueue-0(DEBUG) java.lang.SecurityException: class "CLASSNAME" does not match trust level of other classes in the same package 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.CPCallbackHandler$ChildElement.checkResource(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader$1.run(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader$1.run(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.security.AccessController.doPrivileged(Native Method) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader.findClass(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.lang.ClassLoader.loadClass(Unknown Source) 
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.lang.ClassLoader.loadClass(Unknown Source)...More 

जहां CLASSNAME = एप निष्पादन में कई जारों से यादृच्छिक बिंदुओं पर हर वर्ग को बहुत अधिक व्यवहार करते हैं, तो कई व्यवहार तोड़ते हैं। यदि हमारे उपयोगकर्ता जावा 6 का उपयोग करना चाहते थे, तो उन्हें कोई समस्या नहीं है! बस 7 (अपडेट 4)। हम मुख्य आवेदन जार और इसकी लाइब्रेरी जार दोनों, हमारे सभी जारों पर हस्ताक्षर करते हैं। यानी हमारे वेबस्टार्ट ऐप लॉन्च करने वाले उपयोगकर्ता पीले या लाल की बजाय नीली ढाल देखते हैं।

यह स्पष्ट रूप से एक मुद्दा है क्योंकि उपयोगकर्ता अब जावा 7 में अपग्रेड कर रहे हैं। मैंने पिछले ऐप (काम) का उपयोग करके या फिर एक नया इंस्टॉल करके उपयोगकर्ता मशीन पर जावा 6 का उपयोग करने के लिए हमारे ऐप को मजबूर करने का प्रयास किया है एक .... j2se संस्करण = "1.6" संसाधनों के चारों ओर टैग के साथ, लेकिन यह अपनी स्वयं की समस्याएं पैदा करता है जो शायद अपने स्वयं के धागे (ऑटो-जेरे-इंस्टॉलेशन भाग) में सबसे अच्छा होगा।

क्या ओरेकल जावा 7u4 के साथ वेबस्टार्ट सुरक्षा तोड़ दिया था? मैं इस सुरक्षा अपवाद मुद्दे को कैसे हल करूं?

+0

हम अभी भी इन लक्षणों को अगस्त 2014 में नवीनतम जेडीके के साथ देख रहे हैं। ओरेकल ने यह चिह्नित किया है तय के रूप में क्या कोई और अभी भी यह देख रहा है? और क्या इस मुद्दे को उत्तेजित करने के लिए एक विश्वसनीय परीक्षण मामला है ताकि हम फिक्स को सत्यापित कर सकें? –

उत्तर

3

बस jarsigners के मूल लेखक हैक में जाँच। मैं यहाँ एक और देव द्वारा निर्देशित किया गया, जिसे करने के लिए मैं मूल रूप से हैक साझा के साथ जावा 7 के लिए अपनाया जा सकता है।

इस में अपने निरंतर जांच के आधार पर आप हैक

callNoArgMethod("getSigningData", jar); 
makeHardLink("signingDataRef", jar); 

callNoArgMethod("getManifest", jar); 
makeHardLink("manRef", jar, n); 

प्रकट कॉल इस पोस्ट का हल का हिस्सा नहीं थे करने के लिए कॉल करने के लिए निम्न जोड़ने की आवश्यकता होगी। वे तब पाए गए जब इस मुद्दे को पुनर्जीवित करने के लिए स्वीकृति परीक्षण बनाया गया था।

इस नई जानकारी के आधार पर, हमने अपना दृष्टिकोण बदल दिया है, अब हम सभी "प्राप्त करें" विधियों को कॉल करने के लिए प्रतिबिंब का उपयोग करते हैं (प्रारंभिक रूप से सॉफ्टवेरेंस को पॉप्युलेट करने के लिए प्राप्त विधियों की कॉल की आवश्यकता होती है, अगर वे पहले से ही पॉप्युलेट नहीं हैं)

और उसके बाद कैश्ड जारफाइल क्लास में सभी सॉफ्टरेक्शंस को प्रतिबिंबित करें और उन्हें हार्डलिंक बनाएं।

भविष्य में आगे के आंतरिक नाम/रिफैक्टरों से समाधान का प्रमाण होना चाहिए, जब तक कैश्ड जारफाइल जगह पर रहता है और हैक का मूल आधार सत्य रहता है। (यानी:। मैं पूर्व में जारी हुए साथ JRE के लिए 8 अद्यतन 91 को अद्यतन करने के बाद एक ही समस्या है

2

मुझे लगता है कि आपको this bug का अनुभव हो रहा है।

बग स्थिति कहती है कि एक फिक्स 7u4 में वितरित किया गया है। लेकिन यह आप जो कह रहे हैं उसके साथ जेल नहीं करता है। शायद "फिक्स" ब्रेक ....

इस बीच, "squaat" द्वारा बग पर टिप्पणियां संभावित कामकाज का उल्लेख करती हैं। उदाहरण के लिए, कुछ जारों को पहले लोड करने के लिए मजबूर करने के लिए प्रारंभिक ढेर आकार और/या प्रीलोडर का उपयोग करना।

0

मैं जेआरई 7u5 का उपयोग कर एक ही लक्षण के साथ संघर्ष कर रहा हूं। JRE 6u33 का उपयोग कर समस्याओं के बिना सटीक वही एप्लिकेशन वेब शुरू हुआ।

मेरे मामले में समस्या मेरी एक्सटेंशन jnlp फ़ाइलों में से एक के कारण हुई थी। मास्टर jnlp फ़ाइल ने सभी अनुमति सुरक्षा निर्दिष्ट की है, जबकि एक्सटेंशन jnlp ने कोई विशिष्ट सुरक्षा आवश्यकता नहीं घोषित की है (केवल एक खाली सुरक्षा टैग)।

इससे एक्सटेंशन जार को सैंडबॉक्स में लोड किया गया। स्पष्ट रूप से जावा 7 विभिन्न सुरक्षा आवश्यकताओं के साथ मिश्रित जार स्वीकार नहीं करता है, भले ही वे सभी हस्ताक्षरित हैं।

समस्या यह सुनिश्चित करके तय की गई थी कि सभी एक्सटेंशन jnlp फ़ाइलों ने मास्टर जेएनएलपी फ़ाइल के समान सुरक्षा आवश्यकताओं को निर्दिष्ट किया है।

+0

हम केवल एक jnlp का उपयोग करें। कोई एक्सटेंशन नहीं – Glstunna

6

मुझे 1.7.07 के साथ एक ही समस्या थी: कक्षाओं को लोड करते समय मेरा वेबस्टार्ट एप्लिकेशन उसी त्रुटि संदेश के साथ यादृच्छिक रूप से विफल रहा। मुझे इस पृष्ठ oracle forums पर एक दिलचस्प कामकाज मिला। अंतिम उत्तर समस्या के लिए एक समाधान (जावा 6) का वर्णन करता है - जार के हस्ताक्षर का संदर्भ मुलायम संदर्भ के रूप में होता है और ये कचरा एकत्र हो सकता है, और इससे त्रुटि संदेश होता है। यह कुछ अतिरिक्त लाइनें

// Java 1.7 
callNoArgMethod("getSigningData", jar); 
makeHardLink("signingDataRef", jar); 
1

hardreferences में softreferences कर 1.6, 1.7, 1.8 अद्यतन 77 मेरी ऐप्लिकेशन चलाता ठीक

है ओरेकल एक बग पुनः शुरू किया। कि JRE में मौजूद था 1.6 bug?

मैं पाया है कि चारों ओर केवल काम जावा नियंत्रण कक्ष से मिली-जुली कोड नियंत्रण निष्क्रिय करने के लिए है।


मैं इसे तय की। समस्या का इस्तेमाल किया एक पुस्तकालय में था मेरे आवेदनों से। MANIFEST.MF जार में मौजूद यह था:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.7.0 
Created-By: 1.5.0_07-87 ("Apple Computer, Inc.") 
Built-By: wolf 

Name: common 
Specification-Title: swixml 
Specification-Vendor: swixml.org 
Specification-Version: 1.6 
Implementation-Title: org.swixml 
Implementation-Vendor: swixml.org 
Implementation-Version: 1.6 beta 1 (#151) 

"नाम" संपत्ति के रूप में यहां कहा गया है http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#JAR_Manifest

इस जार "नाम" प्रविष्टि एक के रूप में व्याख्या की है पर हस्ताक्षर करना संसाधन विशिष्ट प्रविष्टियों के लिए प्रयोग किया जाता है संसाधन लेकिन साइन करने के लिए कोई संसाधन नहीं है। जब एप्लिकेशन लॉन्च किया जाता है तो मैनाफ्स को मैनिफ़ेस्ट.एमएफ में रिपोर्ट किए गए संसाधनों के बीच एक विसंगति मिलती है और आवेदन को अवरुद्ध करने वाले जार में प्रभावी संसाधन

संबंधित मुद्दे