首页 > 解决方案 > 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 中的条件断点截图:

在此处输入图像描述

标签: javaeclipse

解决方案


在代码到达该行之前评估条件行断点表达式。由于recipient在第 65 行中定义,因此不能在第 65 行的断点中使用此变量名。

要修复它,您可以将换行点表达式重写为:

"1".equals(list.get(0))

或将断点移动到第 66 行。


推荐阅读