2011-07-06 15 views
18

मैं जावा 1.7, ग्रहण 3.7 का उपयोग बाज़ार से FindBugs प्लगइन के साथ कर रहा हूं।Findbugs "System.out की शून्य सूचकता dereference" देता है, क्यों?

class Application 
{ 
    public static void main(String[] args) 
    { 
    System.out.println("Bla"); 
    } 
} 

यह संदेश अतीत और आंतरिक कार्यान्वयन में मौजूद नहीं थे सिस्टम में हमेशा से था: उदाहरण के स्वर्ग के रूप में के रूप में अच्छा है

public final static PrintStream out = null; 

तो FindBugs ठीक है, लेकिन कुछ परिवर्तन ऐसा ही किया संदेश अब आता है?

+1

नहीं जरूरी है, वहाँ की संभावना एक ब्लॉक कहीं कि 'कुछ करने के लिए out' बताए है (एक' static' ब्लॉक)। प्रलेखन के आधार पर, FindBugs अभी भी प्रयोगात्मक है और हमेशा ठीक से काम नहीं कर सकता है। यह findbugs में एक बग की तरह लगता है ... Ii मानते हैं कि कोड मानक काम करता है यदि आप इसे मानक JVM के माध्यम से चलाते हैं? –

+2

यकीन है कि यह काम करता है। मुझे लगता है कि इसका जावा 7 पर स्विच के साथ कुछ करना है क्योंकि प्रारंभिक स्थिरता {} में नहीं है (जो मुझे लगता है कि, मेरे पास अभी जावा 6 संस्करण नहीं है)। –

उत्तर

15

क्योंकि जावा 6 में इसे इस तरह देखा:

public final static PrintStream out = nullPrintStream(); 

/** 
* The following two methods exist because in, out, and err must be 
* initialized to null. The compiler, however, cannot be permitted to 
* inline access to them, since they are later set to more sensible values 
* by initializeSystemClass(). 
*/ 
private static PrintStream nullPrintStream() throws NullPointerException { 
    if (currentTimeMillis() > 0) { 
     return null; 
    } 
    throw new NullPointerException(); 
} 

तो मैं वे जावा 7 में यह सरलीकृत और संकलक में कुछ अपवाद जोड़ा लगता है।

जेवीएम मूल कोड में बाहर, में, और गलती करता है, इसलिए यह त्रुटि संदेश यह व्यर्थ है।

11

यह Findbugs 1.3.9 में bug के रूप में चिह्नित किया गया है। यह Findbugs 2.0 के लिए तय किया गया है, और बैकपोर्ट किया जा सकता है।

+1

दुर्भाग्य से यह अभी भी हो रहा है। कम से कम मुझे अभी भी यह त्रुटि मेवेन के Findbugs प्लगइन के माध्यम से मिलती है। जिसे रिलीज 2.3.3 के रूप में Findbugs 2 का उपयोग करना है। –

+0

उस स्थिति में फिर से बग की रिपोर्ट करने लायक हो सकता है, टिप्पणियां स्पष्ट रूप से बताती हैं कि इसे findbugs 2 में ठीक किया जाना चाहिए। – Thirler

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