通过JNI获取子类Rectangle2D.Double成员

时间:2016-05-12 13:49:26

标签: java c++ java-native-interface

假设以下课程

import java.awt.geom.Rectangle2D;

class SomeJavaClass
{
    public SomeJavaClass()
    {
        m_rect = new Rectangle2D.Double();
    }
    Rectangle2D.Double m_rect;
}

并遵循C ++代码

jclass someJavaCls = env->FindClass("my/package/SomeJavaClass");
jfieldID rectID = env->GetFieldID(someJavaCls, "m_rect", "Ljava/awt/geom/Rectangle2D;");

问题是我不知道如何访问m_rect的fieldID。通过上述GetFieldID电话,我得到了

Exception in thread "Thread-2" java.lang.NoSuchFieldError: m_rect

但是,如果我将GetFieldID的签名更改为"Ljava/awt/geom/Rectangle2D/Double;",我会得到相同的异常。这是怎么做到的?

1 个答案:

答案 0 :(得分:0)

解决方案似乎是“Ljava / awt / geom / Rectangle2D $ Double;”因为DoubleRectangle2D的子类。