2010-12-02 13 views
9

मेरे पास एक जावा ऐपलेट है जिसे मैंने लिखा है और इसे थोड़ी देर तक चला रहा है। एप्लेट में मेरे पास जेएलएबल्स का एक समूह है जो HTML को उनकी टेक्स्ट सामग्री में उपयोग करता है (जिसे अनुमति है, और वर्षों से काम कर रहा है)। HTML का उपयोग करने का मुख्य कारण जेएलबेल में लाइन ब्रेक की अनुमति देना है।एचटीएमएल अब जेएलएबल (और अन्य घटकों) में काम नहीं कर रहा है

समस्या: हाल ही में जेएलएबल्स जिनमें एचटीएमएल है (कुछ नहीं) ने अपना टेक्स्ट प्रदर्शित करना बंद कर दिया है। मुझे लगता है कि हाल के जावा अपडेट (जावा एसई 6 अपडेट 22, 2010-अक्टूबर -12 को) के साथ कुछ ऐसा करने के लिए कुछ हो सकता है, 100 प्रतिशत निश्चित नहीं है, लेकिन समस्याएं तब शुरू होने लगती हैं। शायद एक बग पेश किया गया है? या सुविधा हटा दी गई?

मैंने जेडडिटरपेन के साथ प्रयास किया और यह सामग्री एक ही समस्या थी जब सामग्री HTML थी।

यह भी ध्यान रखना महत्वपूर्ण है कि पहली बार जब आप एप्लेट लोड करते हैं (पहली बार आपका जावा रनटाइम शुरू होता है) यह ठीक काम करता है, लेकिन यदि आप वेबपृष्ठ को रीफ्रेश करते हैं तो इसमें वर्णित समस्याएं हैं।

क्या किसी के पास समान समस्याएं हैं? किसी के पास कोई अंतर्दृष्टि है? या मैं बस कुछ गूंगा कर रहा हूँ?

मैं एक बहुत ही साधारण परीक्षण एप्लेट बना दिया है और मैं 100% नियमितता के साथ मुद्दों (याद है कि पहली बार क्रम भार यह ठीक है, केवल लगातार रीफ्रेश भी काम करेंगे समस्याओं का कारण बन जाएगा) पुन: पेश कर सकते हैं:

[HelloWorldApplet जावा]

import javax.swing.*; 

public class HelloWorldApplet extends JApplet 
{ 
    public void init() 
    { 
     this.add(new JLabel("Hello Everybody (Text)"), java.awt.BorderLayout.NORTH); 
     this.add(new JLabel("<html><body>Hello Everybody (HTML)</body></html>"), java.awt.BorderLayout.SOUTH); 
    } 
} 

[HellowWorldApplet.html]

<html> 
<title>A Test</title> 
<body> 
    <applet code="HelloWorldApplet.class" width="320" height="120"> 
     You need Java 
    </applet> 
</body> 
</html> 

पी एस। मैं मुख्य रूप से क्रोम का उपयोग कर परीक्षण कर रहा हूं लेकिन मैंने आईई 8 में भी कोशिश की है। इसके अलावा मैं (जाहिर है) मेरे रन टाइम के रूप में नवीनतम जावा एसई 6 अपडेट 22 स्थापित है, और मेरे जेडीके के लिए मिलान अपडेट है। मैं उपर्युक्त परीक्षण एप्लेट को बस संकलित करके संकलित करता हूं: "javac HelloWorldApplet.java"

+0

मैं सिर्फ एक और परीक्षण जहां मैं एक नया धागा अंडे किया जो loops और लेबल्स हर सेकेंड अद्यतन, एक बढ़ती int गिनती दिखा रहा है। जब int भी है, तो मैं HTML के साथ लेबल अपडेट करता हूं और जब int अजीब होता है तो मैं टेक्स्ट (कोई HTML) के साथ लेबल अपडेट करता हूं ... जैसा कि मुझे उम्मीद है कि एचटीएमएल के साथ अद्यतन होने पर लेबल कुछ भी नहीं दिखाता है, और जब टेक्स्ट के साथ अपडेट किया जाता है तो यह प्रदर्शित होता है पाठ सही ढंग से। HTML के साथ कुछ गलत है। ऐसा विश्वास करना मुश्किल लगता है कि इन मुद्दों में कोई और नहीं है? – devlop

+0

लेबल पर .putClientProperty ("html.disable", Boolean.TRUE) को कॉल करने से HTML को प्रदर्शित करने का कारण बन जाएगा (लेकिन निश्चित रूप से यह टेक्स्ट के रूप में प्रदर्शित होगा, यानी इसे स्वयं व्याख्या करने के बजाय HTML दिखाएं - जो नहीं है वांछित है)। लेकिन सिर्फ एक और सबूत है कि जेएलएबल सही ढंग से चित्रित कर रहा है, यह सिर्फ एचटीएमएल की व्याख्या नहीं कर रहा है। – devlop

उत्तर

7

एक दोपहर इस का कारण की तलाश में व्यर्थ है, तो निम्न बग रिपोर्ट को देखने के http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6993691

बग रिपोर्ट में समाधान नहीं है:

import javax.swing.*; 
import javax.swing.text.html.parser.ParserDelegator; 

public class HelloWorldApplet extends JApplet { 
    public void init() { 
     ParserDelegator workaround = new ParserDelegator(); 
     applet.add(new JLabel("Hello Everybody (Text)"), java.awt.BorderLayout.NORTH); 
     applet.add(new JLabel("<html>Hello Everybody (HTML)</html>"), java.awt.BorderLayout.SOUTH); 
    } 
} 
+0

ओह हाँ! धन्यवाद एक गुच्छा, खेद है कि आपने अपनी दोपहर इस पर बिताई लेकिन मैं बहुत सराहना करता हूं। मैंने बग डेटाबेस को देखने की कोशिश की लेकिन उसे वह नहीं मिला। कम से कम यह एक बग था और मैं पागल नहीं जा रहा था। फिर से धन्यवाद, हाँ। – devlop

+0

असल में मुझे आपको धन्यवाद देना चाहिए :) एक प्राचीन (मुख्य रूप से एडब्ल्यूटी आधारित) एप्लेट को विस्तारित करते समय मैंने इस व्यवहार पर ठोकर खाई, मैं सोच रहा था कि मैंने कोडिंग को खराब कर दिया था। शुक्र है कि मैंने कुछ घंटे बाद आपकी पोस्ट पाई और फिर जावा बगट्रैकर से जुड़े स्टैक ओवरफ्लो पर एक और ... – kolmis

+1

बहुत बहुत धन्यवाद। आपने मेरा ऐपलेट बचाया : पी – gd1

0

थ्रेडिंग समस्या जैसे वर्णन से लगता है।

दुर्भाग्य से एप्लेट का निर्माण नहीं किया गया है या एडब्ल्यूटी इवेंट डिस्पैच थ्रेड (ईडीटी) पर उनके जीवन चक्र विधियों को बुलाया गया है।

तकनीकी रूप से आपके कन्स्ट्रक्टर और init कोड को java.awt.EventQueue.invokeAndWait के अंदर निष्पादित किया जाना चाहिए।

+0

मैंने सादगी के लिए उपरोक्त उदाहरण (मूल से) को सरल बना दिया है। फिर, आपके उत्तर के जवाब में, मैंने इन दोनों को लपेटने की कोशिश की।() (एकमात्र रननेबल() {सार्वजनिक शून्य रन() {...}} कॉल के साथ कॉल (कॉल) और कॉल अभी भी एक ही समस्या है। – devlop

+0

मुझे यह भी मजाकिया लगता है कि सब कुछ एक नए रनटाइम के साथ ठीक काम करता है लेकिन फिर चलने वाले रनटाइम के भीतर लगातार रनों पर यह समस्या होती है। मुझे लगता है कि एक थ्रेडिंग मुद्दा हमेशा होता है - हालांकि मैं इसके बारे में गलत हो सकता था। – devlop

+0

@devlop थ्रेडिंग समय के बारे में है। पहली बार प्रारंभिकता धीमी हो सकती है, इसलिए समय के लिए पूरी तरह से अलग होने के लिए बहुत अधिक संभावनाएं हैं। –

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