在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();)当我检查的值作业的右侧我得到了我期望得到的期望值。但是,当我前进到下一行(return语句)时,调整的值变成空格(“”)。因此该程序返回以下异常。我不明白为什么它会改变return语句中的值。有任何想法吗?
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