为什么在J2ME中编译Java文件时会出现此错误。 是因为广泛使用数组对象,因为我在Java文件中定义了许多数组对象?
答案 0 :(得分:3)
它可能是方法中的数组初始值设定项,如:
void someMethod() {
int[] array = {0, 1, 2, 3};
}
这相当于:
int[] array = new int[4];
array[0] = 0;
array[1] = 1;
array[2] = 2;
array[3] = 3;
并且每个元素赋值需要四个VM指令(每个元素的代码在4到12个字节之间。)
如果初始化程序太长,它将超过方法长度的32K限制。
答案 1 :(得分:0)
使用方法代码有32KB的限制,请注意不使用类文件大小。
简单代码
public void foo() {
int arr[] = {1, 2, 3};
}
将变为[used javap以获得此结果]
public void foo();
Code:
0: iconst_3
1: newarray int
3: dup
4: iconst_0
5: iconst_1
6: iastore
7: dup
8: iconst_1
9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
15: astore_1
16: return
所以你可以想象你的巨大& ocmplex数组会变成什么大小。
我建议您将数据移动到.jar文件中的外部资源中,它也会更好地压缩。也尝试优化它