在java中初始化大型数组的快捷方法显示"找不到主类"错误

ris*_*shy 2 java arrays

我正在使用Netbeans,它只是一个简单的代码,我正在尝试初始化名为primes的数组,其中包含大约100000个整数,因为,

int[] primes = {0, 0, 1, 1, 1, 1, 2.......................................};
Run Code Online (Sandbox Code Playgroud)

据我所知,这个错误是由于大阵列引起的.我怎样才能摆脱这种"无法找到或加载主类"的错误?

Ste*_*n C 13

我应该指出,列出100,000个元素的数组初始值设定项不会编译.Java类文件规范对某些事物设置了限制,其中之一是方法的代码数组不能大于65535字节.具有100,000个值的数组初始化程序正在超出该限制......很容易.

参考:JVM规范4.9.1.

(规范明确提到了代码大小限制.其他限制没有得到这种处理;例如常量池中常量的数量,类中方法的数量等等.无论哪种方式,限制都是固有的.类文件格式中各种字段的大小.)

我建议您将素数放入JAR文件中的资源中,并将它们读入分配了正确大小的数组中.

跟进

"我还尝试将数组中的数字保存在以空格分隔的字符串中[...]所以,String的大小是否也有限制?"

是.在(修改的)UTF-8编码中,字符串文字长度最多只能为65535字节; 请参阅JVM规范4.4.34.4.7

(这就是我不推荐这种方法的原因......)


可能实际上导致您的"无法找到主要"问题......但前提是您正在忽略编译错误并尝试运行代码.如果您这样做,则应更改IDE首选项,以免意外尝试运行具有编译错误的代码.(它将节省您的时间/痛苦调试伪造的运行时错误,这些错误确实是编译错误...就像这个.)