2012-09-17 12 views
11

मैं एचटीएमएल जावा एप्लेट में एम्बेड करने के लिए यूआरएल डेटा क्षमताओं का पता लगाने की कोशिश कर रहा हूं।यूआरएल डेटा के माध्यम से जावा एप्लेट एम्बेड करें

एचटीएमएल टैग्स के लिए एक जावा एप्लेट 1 को तत्काल करने के लिए प्रलेखन, इस विकल्प को बाहर न करें, लेकिन मुझे ऐसा करने में सक्षम नहीं लगता है।

<object type="application/x-java-applet" width="100" height="100"> 
    <param name="archive" value="data:application/java-archive;base64,BASE64_OF_JAR"/> 
    <param name="code" value="test.class"/> 
    <h1>not working</h1> 
</object> 

पाठ "नाम" के साथ एक IlegalArgumentException में यह बदलाव परिणाम:

मैं अलग का उपयोग कर HTML टैग मूल्यों की विविधता (वस्तु और एप्लेट) और क्या मैं अपने लक्ष्य के करीब आ गया लगता है कि यह किया गया है। मैं ब्राउज़र पर त्रुटि आइकन पर यह क्लिक करके जांचता हूं। जावा कंसोल पर पूरे स्टैक ट्रेस है:

java.net.MalformedURLException: unknown protocol: data 
     at java.net.URL.<init>(Unknown Source) 
     at java.net.URL.<init>(Unknown Source) 
     at sun.plugin.util.ProgressMonitorAdapter.setProgressFilter(Unknown Source) 
     at sun.plugin2.applet.Plugin2Manager.setupProgress(Unknown Source) 
     at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 

किसी को भी ऐसा करने के तरीके के बारे में एक विचार है या अगर यह संभव नहीं है?

पुनश्च: वहाँ कैसे Oracle here

+0

स्वीकार करना है कि मैंने पोस्ट को ध्यान से दूसरे दिन नहीं पढ़ा और उस अंतिम लिंक को याद किया। दिलचस्प है कि एक जेएनएलपी बेस 64 एन्कोडेड हो सकता है .. –

+0

क्या होता है यदि आप 'डेटा: एप्लिकेशन/जावा-आर्काइव' को 'डेटा: एप्लिकेशन/एक्स-जावा-आर्काइव' के साथ बदलते हैं तो क्या होता है? –

+0

यह वही अपवाद है। प्लगइन हैंडलर डेटा यूआरएल को पहचानने के लिए प्रतीत नहीं होता है, प्लगइन के स्रोत कोड को देखना अच्छा लगेगा :) पूर्ण अपवाद: http://pastebin.com/ddsDSTQg – user823959

उत्तर

5

HTML4 specification वस्तु तत्व के लिए इनलाइन डेटा URL DATA के माध्यम से एम्बेड और एप्लेट इन्स्टेन्शियशन documentation ओरेकल से भी इस की अनुमति देता है की अनुमति देता है। किए गए परीक्षण जावा ब्राउज़र प्लगइन (ओरेकल से) दिखाते हैं, और Java SE 6 से उपलब्ध स्रोत कोड दिखाता है कि कार्यान्वयन इसका समर्थन नहीं करता है।

इस मामले में, ब्राउज़र का समर्थन करने पर कोई फर्क नहीं पड़ता है, क्योंकि ऑब्जेक्ट/एप्लेट एचटीएमएल एलिमेंट में संसाधन संदर्भों का संसाधन प्रबंधन ब्राउज़र प्लगइन द्वारा किया जाता है।

APPLET element की OBJECT विशेषता का उपयोग करते हुए, यूआरएल डेटा के माध्यम से क्रमबद्ध, एप्लेट deserialization का उपयोग करने के लिए एक विकल्प होगा। जैसा कि एचटीएमएल 4 विनिर्देशन में उल्लिखित है, एपलेट और ऑब्जेक्ट विशेषता के लिए कोई सक्रिय समर्थन नहीं है, और जेआरई यूआरएल डेटा से ऑब्जेक्ट deserialization का समर्थन करने के लिए प्रतीत नहीं होता है।

संक्षेप में, जेआरई कोड, ऑब्जेक्ट और आर्काइव एचटीएमएल विशेषताओं में बेस 64 deserialization का समर्थन नहीं करता है।

जेआरई 1.4.1 में यूआरएल डेटा समर्थन के संबंध में एक बीयूजी भी है जो Bug ID: 4756961 पूरा नहीं हुआ था। एक 64 बिट्स Windows मशीन में JRE7 के साथ अपने परीक्षणों के

परिणाम इस प्रकार हैं:

  • संग्रह करने के लिए URL डेटा के माध्यम से एक जार पासिंग Applet2Manager.loadJarFiles में एक IllegalArgumentException में परिणाम का श्रेय();
  • कोडडेट करने के लिए URL डेटा के माध्यम से कक्षा उत्तीर्ण करने के परिणाम Applet2ClassLoader.findClass() में क्लास नॉटफाउंड अपवाद में परिणाम;
  • ऑब्जेक्ट डेटा से यूआरएल डेटा के माध्यम से एक सीरियलाइज्ड एप्लेट पास करना प्लगइन2ClassLoader.getResourceAsResource() में FileNotFoundException में परिणाम देता है।
+0

उत्कृष्ट उत्तर, उपयोगी लिंक के साथ अच्छी तरह से शोध किया गया। इच्छा है कि मैं एक से अधिक बार उभारा सकता हूं। – bonsaiviking

2

द्वारा HTML में एक JNLP एम्बेड करने का एक उदाहरण यहां तक ​​कि अगर यह एचटीएमएल मानकों के द्वारा स्वीकार्य है, JREs आम तौर पर बेस 64 एन्कोडेड डेटा समझ में नहीं आता।

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