Eclipseでデバッグ中に奇妙なエラーが発生しました。私は以下のメソッドをデバッグしています。方法内の2行目EclipseでのJavaデバッグ:奇妙なエラー:StringIndexOutOfBoundsException
private String parseMessage(String msg, String uptoWord) {
String adjusted = msg.replaceAll("(\r?\n|\r)", " ").trim();
adjusted = adjusted.substring(0, adjusted.length() - uptoWord.length()).trim();
return adjusted;
}
(= msg.replaceAll( "?(R \ \ n | \ r)は" 調整」、「).trim();)Iは、の値をチェックするとき課題の右側には、私が期待している望ましい価値があります。しかし、次の行(return文)に進むと、調整された値はスペース( "")になります。したがって、プログラムは次の例外を返します。私はそれがなぜreturnステートメントの値を変更するのか理解できません。何か案は?なぜならたbeginIndexとendIndexの悪い値のJava docs for subStringあたりとして
java.lang.StringIndexOutOfBoundsException: String index out of range: -8
at java.lang.String.substring(Unknown Source)
at com.emdi.sl3.server.emailConnector.EmailListenerOrderCreate.parseMessage(EmailListenerOrderCreate.java:65)
at com.emdi.sl3.server.emailConnector.EmailListenerOrderCreate.XMLCreate(EmailListenerOrderCreate.java:57)
at com.emdi.sl3.server.emailConnector.EmailConnectorEWS.run(EmailConnectorEWS.java:77)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
入力が何であるか分かりませんが、私は意味のある答えを与えることはできません。おそらく 'String#substring'がどのように動作するのか分かりません。最初のインデックスは_inclusive_です。つまり、 'adjusted'の最初の文字が含まれています。しかし、2番目のインデックスは_exclusive_です。 –
@TimBiegeleisen:私はこの問題を解決することができましたが、問題はコードとは関係ありませんでした。私は "ant clean"を行い、期待どおりに働き始めました。したがって、問題はクラスファイルの不一致でした。 – Sudo