首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在intellij中运行单元测试时的错误: java.lang.StackOverflowError

在intellij中运行单元测试时的错误: java.lang.StackOverflowError
EN

Stack Overflow用户
提问于 2019-06-05 13:27:18
回答 1查看 125关注 0票数 0

我在一个基于狂妄自大的项目中有一套单元测试,每当我尝试从IDE中导入测试套件时,我都会得到下面的堆栈跟踪,说明发生了一个java.lang.StackOverflowError

代码语言:javascript
运行
复制
Error:Hybris Model Source Generating Compiler: Error: java.lang.StackOverflowError
java.lang.StackOverflowError
    at java.util.regex.Pattern.range(Pattern.java:2635)
    at java.util.regex.Pattern.clazz(Pattern.java:2564)
    at java.util.regex.Pattern.sequence(Pattern.java:2065)
    at java.util.regex.Pattern.expr(Pattern.java:1998)
    at java.util.regex.Pattern.compile(Pattern.java:1698)
    at java.util.regex.Pattern.<init>(Pattern.java:1351)
    at java.util.regex.Pattern.compile(Pattern.java:1028)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:589)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)
    at de.hybris.bootstrap.config.ConfigUtil.expandProperty(ConfigUtil.java:603)

这是de.hybris.bootstrap.config.ConfigUtil.expandProperty的代码

代码语言:javascript
运行
复制
 private static void expandProperty(String value, PlatformConfig platformConfig, Properties props, String key) {
        String replacement = "";
        int lastIndex = 0;
        Pattern pattern = Pattern.compile("\\$\\{[^\\}]*\\}");
        Matcher matcher = pattern.matcher(value);

        for(String newKey = null; matcher.find(); lastIndex = matcher.end()) {
            replacement = replacement + value.substring(lastIndex, matcher.start());
            newKey = matcher.group().substring(2, matcher.group().length() - 1);
            String newValue = platformConfig.getSystemConfig().getDir(newKey);
            if (newValue == null) {
                newValue = props.getProperty(newKey);
                if (newValue != null && newValue.contains("${")) {
                    expandProperty(newValue, platformConfig, props, newKey);
                    newValue = props.getProperty(newKey);
                }
            }

            if (newValue == null) {
                replacement = replacement + matcher.group();
            } else {
                replacement = replacement + newValue;
            }
        }

        if (lastIndex < value.length()) {
            replacement = replacement + value.substring(lastIndex, value.length());
        }

        if (key != null) {
            props.put(key, replacement);
        }

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 10:47:20

如果您仔细查看您的功能的这一部分:

代码语言:javascript
运行
复制
 if (newValue == null) {
        newValue = props.getProperty(newKey);
        if (newValue != null && newValue.contains("${")) {
            expandProperty(newValue, platformConfig, props, newKey);
            newValue = props.getProperty(newKey);
         }
     }

如果newValue == null为真,newValue != null && newValue.contains("${")为真,则

代码语言:javascript
运行
复制
 expandProperty(newValue, platformConfig, props, newKey); 

将被执行,并再次使用相同的值调用expandProperty,再次执行expandProperty(newValue, platformConfig, props, newKey);,即生成对同一函数的无限调用,并触发expandProperty(newValue, platformConfig, props, newKey);异常。

希望这个好消息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56461456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档