在java中初始化大型数组的快捷方法显示为;找不到主类“;错误
我使用的是Netbeans,它只是一个简单的代码,我试图初始化名为primes的数组,它将由大约100000个整数组成在java中初始化大型数组的快捷方法显示为;找不到主类“;错误,java,arrays,Java,Arrays,我使用的是Netbeans,它只是一个简单的代码,我试图初始化名为primes的数组,它将由大约100000个整数组成 int[] primes = {0, 0, 1, 1, 1, 1, 2.......................................}; 据我所知,这个错误是由大数组引起的。 如何消除“找不到或加载主类”错误?我应该指出,列出100000个元素的数组初始值设定项不会编译。Java类文件规范对某些内容进行了限制,其中之一是方法的代码数组不能大于65535字节。具
int[] primes = {0, 0, 1, 1, 1, 1, 2.......................................};
据我所知,这个错误是由大数组引起的。
如何消除“找不到或加载主类”错误?我应该指出,列出100000个元素的数组初始值设定项不会编译。Java类文件规范对某些内容进行了限制,其中之一是方法的代码数组不能大于65535字节。具有100000个值的数组初始值设定项将超过该限制。。。很容易 参考文献: (规范明确提到了代码大小限制。其他限制没有得到这种处理;例如,常量池中的常量数量、类中的方法数量等等。无论哪种方式,这些限制都是类文件格式中各个字段的大小所固有的。) 我建议您将素数放入JAR文件中的一个资源中,并将它们读入分配了正确大小的数组中 后续行动
“我还尝试将数组中的数字保留在一个字符串中,字符串之间用空格分隔[…],那么,字符串的大小是否也有限制?” 对。在(修改的)UTF-8编码中,字符串文字长度最多只能为65535字节;请参阅JVM规范和 (这就是为什么我不推荐这种方法…)
有可能这实际上是导致您的“找不到主”问题。。。但只有当您忽略编译错误并尝试运行代码时,才可以。如果您正在这样做,您应该更改IDE首选项,这样您就不会意外地尝试运行有编译错误的代码。(这将节省您调试伪运行时错误的时间/痛苦,这些错误实际上是编译错误…就像这一个。)如果您预先知道int在数组中的位置,您可以使用
新建int[100000]
创建它并使用
但您需要适当调整堆的大小
要像您的示例中那样用1填充索引2到5,代码如下:
final int[] primes = new int[100000];
Arrays.fill(primes, 2, 6, 1); // upper index is exclusive
// etc etc
那么…你的主要方法是什么?(依我看…很清楚OP在问什么。只是症状的组合…嗯…很棘手。)我必须说,你需要付出大量的努力来产生这个错误:),100000个条目@洛基——不是真的。只是一个用你最喜欢的脚本语言编写的小程序,以正确的格式发出素数列表。。。然后剪切并粘贴。+1。如果你把这个事实的官方链接放进去,那会更有帮助。我也尝试过把数组中的数字放在一个用空格分隔的字符串中,比如string primes=“0 1 1 1………”。但它仍然显示出同样的错误。那么,字符串的大小也有限制吗?@rishy提供更多的代码可以帮助我们找到它error@Bingo-这很简单,我只是将一个数组从一个文件粘贴到我的代码中,正如我提到的,这个数组可能非常大。但同样大小的字符串也会出现同样的问题。