在JNI中,我知道你可以使用
env->DefineClass
定义一个类。例如,
jclass klass = client->env->DefineClass(nullptr, classLoader, (const jbyte*) classBytes, (jsize) classBytes_size);
同样,我也希望有一个在运行时定义资源的函数。我所说的“资源”是指打包在 jar 文件中的文件,例如图像或声音。但是,我找不到任何可以做到这一点的函数。为什么没有
DefineResource
功能?如果可以的话,你会怎么做?
“资源”只是类路径条目之一上的普通文件。 如果您使用
java -cp ...:$SOME_DIRECTORY
运行代码,您可以将文件放入 $SOME_DIRECTORY
中,它们将被拾取。当然,此时您也可以使用普通文件处理方法..
JNI does 具有
DefineClass
的原因是,您可以定义新的 Java 类,而无需先将它们写入文件并让 ClassLoader 实例拾取它们。