Мой env: Window10 x64 + jdk1.8.0_221
Агент premain
:
public static void premain(String agentArgs, Instrumentation inst) {
JNITransformer transformer = new JNITransformer();
inst.addTransformer(transformer);
inst.setNativeMethodPrefix(transformer, "test");
}
Класс ClassFileTransformer
:
@Override
public byte[] transform(ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer) {
return classfileBuffer;
}
Файл dll cpp:
JNIEXPORT jstring JNICALL Java_com_xxx_jni_sample_BaseService_test_doService
(JNIEnv* env, jclass obj, jstring prompt) {
return charTojstring(env, "do service 2");
}
Мой нативный метод: public static native String doService(String str);
Когда я вызываю нативный метод doService в java Я не получаю ожидаемый результат: do service 2