代码之家  ›  专栏  ›  技术社区  ›  Martin

嵌套类的JNI签名?

  •  3
  • Martin  · 技术社区  · 15 年前

    我试图在WindowsXP上使用JNI,Java版本:

    Java版本“1.6.0_13” Java(TM)SE运行时环境(构建1.6.0_13-b03) Java Hotspot(TM)客户端虚拟机(构建11.3-b02,混合模式,共享)

    尝试获取嵌套类的jClass时

    jClass C=env->FindClass(“A$B”); 断言(c);

    第二行声明,同样的事情在Linux上可以用稍微不同的Java版本(1.5…IIRC)。

    我试过几次排列,比如

    十亿美元; A.B.公司 洛杉矶银行;

    但没用。

    任何建议都将不胜感激。

    马丁

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ronald Blaschke    13 年前

    似乎这个问题是在 this thread 是的。

    更新: Oracle移动了论坛,新的位置是 Signature for nested class?

    以下是解决问题的方法:

    好吧,我终于找到问题了。嵌套类被编译成单独的Java类对象(A.B.class),这对于C/C++程序员来说有点意外。我没有打包文件,因此类被报告为“未找到”。有趣的是它在linux上工作。谢谢你的帮助!

    我的另一个暗示:以防万一 FindClass 返回空值 assert 猜猜看。至少打个电话 env->ExceptionDescribe() 要获得stacktrace stderr 是的。更好的是,利用 env->ExceptionOccurred() 以检查抛出的java异常,就像您调用的任何其他java方法一样。

    推荐文章