如何使用JNI调用API
访问静态枚举字段我正在尝试使用以下代码从Glassfish api访问glassfish org.glassfish.api.embedded.ContainerBuilder.Type枚举
jclass Type= env->FindClass(
"org/glassfish/api/embedded/ContainerBuilder$Type");
jfieldID Type_web=env->GetStaticFieldID(
Type,"web","org/glassfish/api/embedded/ContainerBuilder$Type");
但它总是给我错误Exception in thread "main" java.lang.NoSuchFieldError: web
,我该如何访问该字段?
答案 0 :(得分:6)
实际上我在前面错过L
而在类名末尾错过了;
,我做了以下更改
jfieldID Type_web=env->GetStaticFieldID(
Type,"web","Lorg/glassfish/api/embedded/ContainerBuilder$Type;");
答案 1 :(得分:2)
答案 2 :(得分:1)
我自己没有使用反射来查看枚举类,但它们可能以奇怪的方式存储。在您的情况下,我会调用Class.getFields()
并查看班级字段的列表。