【问题标题】:jni doesn't find method in inner class , java.lang.NoSuchMethodErrorjni 在内部类 java.lang.NoSuchMethodError 中找不到方法
【发布时间】:2015-01-27 12:40:04
【问题描述】:

我有一个关于使用 JNI 访问嵌套类中的方法的问题。

public class AccountUI {
    public native ExtrasWageUI[] getExtrasWages();

      public class ExtrasWageUI {
        public ExtrasWageUI() {
          mCppHandle = callConstructorN();
        }

        public ExtrasWageUI(long cppHandle) {
          mCppHandle = cppHandle;
        }

      private native long callConstructorN();
   }
  }

我将在accountUI.getExtrasWages() 收到错误:

java.lang.NoSuchMethodError: 类中没有 name='' signature='(J)V' 的方法 lde/projects/customer/.../myProject/domain/AccountUI$ExtrasWageUI;

JNI 找不到该方法。 有谁知道如何访问内部类中的方法?

【问题讨论】:

  • 更正。它确实找到了类。找不到方法。写JNI方法签名的时候,不要自己编。使用javap -s 的输出。从来没有错。

标签: java c++ java-native-interface inner-classes nosuchmethoderror


【解决方案1】:

你必须在签名中添加外部类:

environment->GetMethodID(resultClassAssistantUI, "<init>", "(L.../domain/AccountUI;J)V");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多