Eclipse에서 디버깅하는 동안 이상한 현상이 발생했습니다. 다음 메소드를 디버깅 중입니다. 상기 방법 내 두번째 라인에서 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'의 첫 번째 문자가 포함되었습니다. 그러나 두 번째 인덱스는 _exclusive_입니다. –
@TimBiegeleisen :이 문제를 해결할 수 있었지만 문제는 코드와 관련이 없습니다. 나는 "개미 청소"를했고 예상대로 작동하기 시작했습니다. 따라서 문제는 클래스 파일이 일치하지 않는 것입니다. – Sudo