Java 1.7.0_17およびJboss 4.2.3GAで実行されているクラスで、Windowsの下に少しコードがあります。コードは、このない:Javaメソッド呼び出しの動作が不可能
Date newNextDate = inBetween(currentDate, nextDate, start);
print("newNextDate=" + newNextDate);
挟んはかなり単純比較ない:終わりにjava.util.Dateで結果が割り当てられるので
private Date inBetween(Date start, Date end, Date test) {
...
Date contains = t.contains(test) ? test : end;
print("returning contains=" + contains);
return contains;
}
正確な実装が含まれているが、関連私見ありませんcontains変数に追加します。標準出力に出力されます:
16:44:56,153 INFO returning contains=Tue Apr 30 23:59:59 CEST 2013
16:44:56,153 INFO newNextDate=null
そして謎が始まるところ、この: 1.直前に変数が含まれているreturn文には、値を持っている 2.収集変数を返すことがnullの後
これは世界でどのように可能ですか?
- はい、このinbetweenメソッドが呼び出されたかどうかを確認しました。そうでない場合、出力が出力されませんでした。
- いいえ、同じ名前のインスタンス変数はありません。しかし、間に何も起こっていなくても。
- いいえ、プロセスをデバッグすることはできません。これは、プロダクションサーバーでのみ発生し、開発時には再現できないためです。
最も奇妙なことは、ここでは、1.000.000行のコードのどこにも存在しないことです。
'print'がどこにあるコードにスタックトレースを出力しますか? '例外e = new NullPointerException(); System.printstacktrace(e); '(warning:pseudo-java)を実行し、' inBetween() 'メソッドの周りにある種のプロキシを注入していないことを確認してください。 (あいまいですが可能です) –
実際にjvmに接続して、プロダクションサーバをリモートでデバッグすることができます。 http://java.dzone.com/articles/how-debug-remote-java-applicat –
デバッグを使用し、ステップごとに繰り返します。必要に応じてブレークポイントを追加し、値を確認します。あなたは間違いなくどこかでエラーがあります。 – Quillion