【问题标题】:How to fix string too long exception in java [duplicate]如何在java中修复字符串太长的异常[重复]
【发布时间】:2016-07-30 13:30:10
【问题描述】:

我有一个分析字符串的算法,但它只需要大约 10000 个字符,而不是引发以下异常

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constant string too long

这是我正在使用的代码

public static void printRepeatingStrings(String inputString, int sequenceLength) {
    if (inputString.isEmpty() || sequenceLength <= 0 || sequenceLength >= inputString.length()) {
        System.out.println("Invalid input");
    } else {
        int i = 0;
        int j = i + sequenceLength;
        Set<String> tempSet = new HashSet<>();
        Set<String> repeatingSequences = new TreeSet<>();
        while (j <= inputString.length()) {
            if (!tempSet.add(inputString.substring(i, j))) {
                repeatingSequences.add(inputString.substring(i, j));
            }
            i++;
            j = i + sequenceLength;
        }
        for (String str : repeatingSequences) {
            System.out.println(str);
        }
    }
}

如果你能帮我解决这个问题,那将非常有帮助

【问题讨论】:

    标签: java


    【解决方案1】:

    Java "constant string too long" compile error. Only happens using Ant, not when using Eclipse

    据说类文件中字符串常量的长度在 UTF-8 编码中限制为 2^16 个字节。

    如果你不使用这么长的常量,也许优化编译器会在主函数中与静态表达式进行一些连接。

    【讨论】:

      【解决方案2】:

      您应该能够获得长度为 Integer.MAX_VALUE 的字符串(根据 Java 规范,数组的最大大小始终为 2147483647 (231 - 1),String 类用于内部存储)或最大堆的一半大小(因为每个字符是两个字节),以较小者为准。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多