यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
रनटाइम त्रुटियाँ
प्रारूप: लक्षण → कारण → सुधार।
MainWindow लोड नहीं होता (reflection त्रुटि / “class not found”)
कारण: रूट क्लास Window को extend नहीं करती या उसमें बिना-आर्ग्स वाला public कंस्ट्रक्टर नहीं है।
सुधार:
public class MainWindow extends Window {
public MainWindow() { } // बिना-args कंस्ट्रक्टर (reflection के लिए अनिवार्य)
@Override public void onShow() throws Exception { super.onShow(); /* … */ }
}
“FrameBuffer not disposed! Must call Image.apply after Image.getGraphics!”
कारण: आपने किसी Image पर off-screen ड्रॉ किया और उसे कमिट नहीं किया।
सुधार: Image.getPaint() से ड्रॉ करें और paint.finish() (या image.applyChanges()) से अंतिम रूप दें,
सब कुछ Main.runOnPaintThreadAndWait(...) के भीतर:
Main.runOnPaintThreadAndWait(() -> {
Paint p = img.getPaint();
// … p में ड्रॉ करना …
p.finish(); // पुष्टि करता है (img.applyChanges() के समतुल्य)
});
⚠️ विसंगति: त्रुटि संदेश
getGraphics()/apply()(पुराने नाम) का उल्लेख करता है; वास्तविक मेथडgetPaint()औरfinish()/applyChanges()हैं। (अध्याय 18)
बैकग्राउंड थ्रेड में बदला गया कंपोनेंट UI को क्रैश/भ्रष्ट कर देता है
कारण: सभी UI हेरफेर paint thread पर होते हैं।
सुधार: Component.onUI(r) / Main.runOnPaintThread(r) से वापस आएँ।
new Thread(() -> { var v = calc(); Component.onUI(() -> label.setText(v)); }).start();
कंस्ट्रक्टर में बनाया गया UI खाली दिखता है / गलत bounds के साथ
कारण: कंस्ट्रक्टर में स्क्रीन/bounds अभी तैयार नहीं होते।
सुधार: super.onShow() के साथ onShow() में बनाएँ। (अध्याय 7)
onAction में अपवाद ऐप को क्रैश किए बिना “गायब” हो जाता है
कारण: हैंडलर Debug.handle द्वारा पकड़े जाते हैं और निगल लिए जाते हैं — वे ऊपर नहीं उठते।
सुधार: प्रसार पर भरोसा न करें; लॉग करें (Debug.log/Debug.handle) और DebugConsole.txt जाँचें।
(त्रुटियाँ और logging)