java - eclipse中的条件断点不适用于局部变量?
问题描述
我正在尝试调试我的 java 代码。我正在设置一个条件断点。但是,当我调试时,它显示错误“条件断点有编译错误”。
以下是我的代码片段:
public RecipientsDTO readRecipientsFromStream(InputStream inputStream) {
ICsvListReader listReader = null;
List<Object> list;
Set<String> values = new HashSet<>();
int numberOfDuplicates = 0;
try {
listReader = new CsvListReader(new InputStreamReader(inputStream),
CsvPreference.STANDARD_PREFERENCE);
while (listReader.read() != null) {
CellProcessor[] processors;
if (listReader.length() == SINGLE_COLUMN_PROCESSOR.length) {
processors = SINGLE_COLUMN_PROCESSOR;
} else {
processors = TWO_COLUMN_PROCESSOR;
}
list = listReader.executeProcessors(processors);
String recipient = (String) list.get(0);
if (!recipient.contains("@")) {
recipient = recipient.replaceAll("[ \\-\\(\\);]", "");
}
if (!values.contains(recipient)) {
values.add(recipient);
} else {
numberOfDuplicates++;
}
}
} catch (SuperCsvConstraintViolationException e) {
log.error("Error parsing csv: {}", e.getMessage());
throw new ParsingFileException(String.format("At Line Number: %s, Message: %s",
listReader != null ? listReader.getLineNumber() : "Unknown", e.getMessage()));
} catch (Exception e) {
log.error("Error parsing csv: {}", e.getMessage());
throw new ParsingFileException();
}
return new RecipientsDTO().numbers(values).numberOfDuplicates(numberOfDuplicates);
}
这是我的条件断点。
recipient.equals("1")
但是它表明无法解析收件人:
以下是我在 eclipse 中的条件断点截图:
解决方案
在代码到达该行之前评估条件行断点表达式。由于recipient
在第 65 行中定义,因此不能在第 65 行的断点中使用此变量名。
要修复它,您可以将换行点表达式重写为:
"1".equals(list.get(0))
或将断点移动到第 66 行。
推荐阅读
- angular - setInterval throwing '没有重载匹配这个调用'
- excel - 如何使用 Excel 宏将部分字符串从特定单元格复制到另一个单元格?
- amazon-ec2 - 我应该使用什么:安全组或WAF Web ACL
- javascript - Vue JS - 让函数中的条件更高效
- python - 我不希望“t”在“不是”中大写
- python - 在python中使用正则表达式过滤和排序列表
- expo - 我有一个全新的 Expo 安装尝试导入 node_module 构建失败
- java - 如何编写部署时自动执行的 Web 服务方法
- wso2 - WSO2 Identity Server 中控制台和 carbon 的区别
- javascript - 试图返回最长的单词但删除某个字符