在我的应用程序中,我正在使用groovy.lang.GroovyClassLoader
将一些常规文件编译到Class<?>
。这些类保存在HashMap
中,稍后再使用。
由于此编译在启动时发生,因此启动时间比预期要长。
有没有办法将生成的Class<?>
对象转储到某些.class
文件,然后下次直接从jar加载类?
所以我正在寻找一种从内存.class
对象中编写Class<?>
个文件的方法
答案 0 :(得分:0)
也许我对这个问题有点晚了,但是最近我找到了一种方法。
在内部检查代码我在内部知道GroovyClassLoader
使用称为CompilationUnit
的类。您可以这样使用它
CompilationUnit cu = new CompilationUnit()
cu.addSource(compilationUnitName,srcCode)
cu.compile()
cu.getClasses() //This returns a list of `GroovyClass`es, they contain the
//name and the bytecode (byte[]) of the generated classes.
然后可以将字节保存在扩展名为.class和voilá的文件中。您可以将它们压缩到.jar
文件中,也可以使用GroovyClassLoader
方法defineClass