我正在使用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.3和4.4.7
(这就是我不推荐这种方法的原因......)
这可能实际上导致您的"无法找到主要"问题......但前提是您正在忽略编译错误并尝试运行代码.如果您这样做,则应更改IDE首选项,以免意外尝试运行具有编译错误的代码.(它将节省您的时间/痛苦调试伪造的运行时错误,这些错误确实是编译错误...就像这个.)
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |