我正在以Krakatau语法生成 JVM 字节码,以将大型二进制 blob 加载到[B
. 关键是将所有实际数据存储在.class
文件中,而不是在运行时从外部源读取它。
我生成的代码如下所示:
.method public static loadImage : ([B)V
.code stack 6 locals 1
aload_0
iconst_0
iconst_1
iadd
dup2
bipush 71
bastore
iconst_1
iadd
dup2
bipush 108
bastore
...
iconst_1
iadd
dup2
bipush 0
bastore
return
.end code
.end method
但是,在运行时,此方法会失败,因为它太长了:
Exception in thread "main" java.lang.ClassFormatError:
Invalid method Code length 572931 in class file Image
有没有更好的方法将大型二进制 blob 加载到字节数组中?我想一种解决方法是保留我当前的代码,但将其拆分为几种方法,但这太可怕了......