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

在Android应用程序中使用ndk构建的库时,如何捕获未经授权的dlinkError?

  •  6
  • Eno  · 技术社区  · 15 年前

    我有一个android项目,其中包含一个使用JNI从C函数中提取值的类。C函数使用ndk构建到一个库中。从C函数返回的值依次用于在类首次加载时初始化类内的变量。这个很好用。但是,我还希望在缺少库时通过提供默认值来工作。所以我用这样的方法:

    static native String getstring();
    
    static {
            try {
                    System.loadLibrary("library");
                    NAME = getstring();
            }
            catch (Exception e) {
                    NAME = "Default";
            }
    }
    

    尽管有了捕获,但当我尝试在缺少库的情况下运行此代码时,仍然会得到一个不满意的链接错误。为什么我没有抓住例外?我做错什么了?

    1 回复  |  直到 14 年前
        1
  •  10
  •   ognian    15 年前

    UnsatisfiedLinkError 不是的子类 Exception . 的层次结构 不满意的链接错误 是:

    Throwable->Error->UnsatisfiedLinkError
    

    你最好抓住 不满意的链接错误 如果你想处理的话。

    推荐文章