2011-11-16 26 views
0

Null Point Exceptionが発生しました.Groovyシェルは、どこで発生しているのかを特定していません。それは...、それらの3があったことを言っラインscans.each {item ->ヌルポインタ例外Groovy

あなたは勇気がいる場合に発生した最初のた:

use(groovy.time.TimeCategory) { 
new File('C:\\Users\\pro-services\\Documents\\ScanEngineDetailFake.log').eachLine { line -> 

    m = line =~ d 
    log = line 
    matcher = (log =~ /\d{2}:\d{2}:\d{2},\d{3}/) 

    matcher.count.times { 
    a = matcher[it] 

    if(a) { 
     if(!prevDate) { 
     prevDate = parseDate(a) 
    } 
    if (line ==~ c){ 
     starts ++ 
     prevDate = parseDate(a) 
    } 
    if (line ==~ d){ 
     finishes ++ 
     def nextDate = parseDate(a) 
     deltas << nextDate - prevDate 
     scans << line 
    } 
    } 
} 

def startDate = null 
def finDate = null 
def filediff = null 

76 use(groovy.time.TimeCategory) { 

78 scans.each { item -> 

    logs = item 
    matcher = (logs =~ /\d{2}:\d{2}:\d{2},\d{3}/) 

83 matcher.count.times { 
    b = matcher[it] 

    if (logs ==~ c){ 
     startDate = parseDate(b) 
    } 

    if (logs ==~ d){ 
     finDate = parseDate(b) 

96  filediff = finDate - startDate 

     deltas.each { diff -> 
     if (diff == filediff){ 
      n = logs =~ c 
      println n[0][1] 
      println diff  
     }  
     } 
    } 
    } 
} 

任意のアイデア?私は他のnullpointerの問題を見てきましたが、それらはすべてコード固有のようですので、私はこれをライブラリに追加します。

+0

スキャンはどこで定義されていますか?私は、あなたがそれに物事を入れようとしているのを見るだけですが、私はそれが何であるか分かりません。 –

+0

ああ、スキャンはオリジナルで定義されているが、私が引用し始めたところで定義されたヌルリストです。私は仕事で木曜日にそれを修正するでしょう:) – blaughli

答えて

1

NullPointerExceptionオンラインscans.each は、scansがヌル参照であることを意味します。 scansは初期化されていません。前の例のように、def scan = []のような行があるので、scanは空のリストとして初期化されます。 def scanを書き込んだ場合、スキャンはNULLポインタとして初期化されます。

+1

か、あなたは 'スキャン?.each {item - >' nullセーフオペレータを使用して –

+0

私は彼のプログラムスキャンのこの時点ではnullであってはならないと思います。リストを満たす条件が入力されないため、ここでクラッシュします。それ以外の場合は 'scan << line'にスローされます – Antoine

+0

私は同意しますが、' scan?.each'は結果がないことを示します。なぜマッチャーが動作していないのか、そしてそれがうまくいくと、 'null << line'がクラッシュしているのに気を付けるでしょう。私はあなたの答えに同意していない、私はちょうど別の可能なルートを指していた –