Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओएस एक्स 2013-004 के लिए जावा स्विंग अनुप्रयोगों को कैसे प्रभावित (ब्रेक) करता है?

अपडेट 2013-06-21:इस उत्तर में कुछ समाधान और विकल्प शामिल हैं जो उपयोगी हो सकते हैं, लेकिन @sidney-markowitz-biomatters' उत्तर में सही कोड फिक्स है - LAF को ईवेंट थ्रेड से सेट करने की आवश्यकता है!

हाल की समस्याएं एक्वा लुक एंड फील (एलएएफ) को तोड़ने वाले अपडेट से संबंधित प्रतीत होती हैं, जो मैक ओएस एक्स पर स्विंग ऐप्स के लिए डिफ़ॉल्ट है।

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

यदि आप एक अलग एलएएफ के साथ मिल सकते हैं तो आपका ऐप सामान्य रूप से काम करना चाहिए। यह पेपरकट के लिए किया था, कम से कम (003 अपडेट के कारण कुछ विंडो फोकस समस्याएं हुईं, 004 अपडेट ने तबाही मचाई)।

कुछ विकल्प:

  • जावा कोड (जैसे निंबस या मेटल) से जावा संस्करण-विशिष्ट क्रॉस प्लेटफॉर्म एलएएफ का उपयोग करना:

    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName())
    
  • जावा कोड से विशिष्ट LAF सेट करना:

    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel")
    
  • टर्मिनल से डिफ़ॉल्ट LAF को ओवरराइड करना:

    java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel MyApp
    

हमारे मामले में हम स्पष्ट रूप से कॉल कर रहे थे UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()) हमारे कोड में और एक वर्कअराउंड चाहते थे जिसमें कोड परिवर्तन (यानी एक हॉटफिक्स) शामिल नहीं था, इसलिए हमें डिफ़ॉल्ट सिस्टम को ओवरराइड करने की आवश्यकता थी एलएएफ इस प्रकार है।

  • टर्मिनल से सिस्टम LAF को ओवरराइड करना:

    java -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ...
    
  • सिस्टम LAF को Info.plist से ओवरराइड करना फ़ाइल (यदि आपने मैक एप्लिकेशन के रूप में बंडल किया है, तो अन्य वीएम विकल्पों के लिए भी काम करता है) (उदाहरण के लिए My.app/Contents/Info.plist पर) )।

    आप -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel जोड़ना चाहते हैं अंत . तक <string> का VMOptions . के लिए मान <key> . विकल्प स्थान से अलग होते हैं, बिल्कुल टर्मिनल की तरह। उदा. यदि आपके पास पहले से एक useScreenMenuBar है विकल्प:

    <key>VMOptions</key>
    <string>-Dcom.apple.macos.useScreenMenuBar=true -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel</string>
    


संपादित करें:@trashgod ने एक प्रतिलिपि प्रस्तुत करने योग्य उदाहरण के लिए कहा। मुझे यकीन नहीं है कि 004 अपडेट के साथ आने वाली समस्याओं का पूरा दायरा क्या है, लेकिन यहां एक सरल पुनरुत्पादन है:

अपडेट 2013-06-21 - गलत तरीका, त्रुटि को पुन:प्रस्तुत करना:

public class AquaLafTest {
    public static void main(String[] args) throws Exception {
        javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
        javax.swing.JOptionPane.showMessageDialog(null, "msg");
    }
}
  1. Apple JRE के साथ चलाएं जो 004 अपडेट के साथ आता है (जैसे /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home पर) ) ध्यान दें कि संदेश दिखाई नहीं दे रहा है, संवाद आइकन दिखाई नहीं दे रहा है और बटन दृश्यमान रूप से क्लिक करने योग्य नहीं है।

  2. पुराने Apple JRE या किसी अन्य JRE के साथ चलाएँ। ध्यान दें कि संवाद अपेक्षित रूप से प्रदर्शित होता है।

अपडेट 2013-06-21 - इवेंट थ्रेड पर सही तरीका, सही तरीके से काम करता है:

public class AquaLafTest {
    public static void main(String[] args) throws Exception {
        javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
                try {
                    javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
                    javax.swing.JOptionPane.showMessageDialog(null, "msg");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक वर्चर कॉलम को SQL में एकाधिक मानों के रूप में कैसे विभाजित करें?

  2. Oracle में regexp_substr . के साथ सीमांकक के रूप में स्पेस और कैरेक्टर द्वारा विभाजित स्ट्रिंग

  3. Oracle SQL डेवलपर:विफलता - परीक्षण विफल:नेटवर्क एडेप्टर कनेक्शन स्थापित नहीं कर सका?

  4. EM13c . में एजेंट डिमोशन

  5. PLS-00428:इस सेलेक्ट स्टेटमेंट में INTO क्लॉज अपेक्षित है