子类的JNI FindClass格式?

Ian*_*bee 14 java java-native-interface

加载子类的正确FindClass标识语法是什么?例如:

package a.b.c;

class Foo {
   class Bar {
     ...
   }
}
Run Code Online (Sandbox Code Playgroud)

为了得到Foo我可以做(*env)->FindClass(env, "/a/b/c/Foo"),但试图Bar通过(*env)->FindClass(env, "a/b/c/Foo/Bar")抛出一个ClassNotFoundException.是否有不同的语法来表示子类?

Ian*_*bee 44

没关系,这个javap工具在这里证明是有用的.正确的语法是:

a/b/c/Foo$Bar

  • 还要注意,对于非静态嵌套类(内部类),构造函数会使用外部类的附加参数,从而使签名看起来不一样。在此示例中,它将为“(La / b / c / Foo;)V”。当然,javap也有助于调试它:) (2认同)