• javah 生成header file 报错 问题解决


    环境:Android Studio, Mac OS

    目标: 用javah 为MainActivity.class 生成 jni header 文件

    正确的命令是

    cd <class文件的路径>

    javah -classpath :<jar包的路径>:. <class文件的包名+类名>

    ------示例 -----

    cd app/build/intermediates/classes/debug

    javah -classpath :/Users/username/Library/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/23.4.0/appcompat-v7-23.4.0-sources.jar:. com.y.www.ndk_test.MainActivity

    ------遇到的问题1 -------

    Error: cannot access android.support.v7.app.AppCompatActivity

      class file for android.support.v7.app.AppCompatActivity not found

    1. 因为MainActivity继承了AppCompatActivity, 需要在classpath中加入AppCompatActivity的jar包,

    可以现在android studio中command+点击 打开AppCompatActivity,然后右键copy path, 就能找到jar包的路径了。 

    2. 有些教程写的是Android.jar包的路径,但是AppCompatActivity并不是在Android.jar包里面,这一点需要注意。

     

    ........遇到的问题2 ..........

    Error: Could not find class file for 'com.y.www.ndk_test.MainActivity'.

    1. 加了classpath之后就找不到需要生成jni header文件的class file了, 需要在classpath后面再加上当前路径. "."表示当前路径, classpath之前用":"分隔 (Mac OS的分隔符是":"不是";")

    2. 需要写完整的包名+类名,所以不能cd到MainActivity所在的文件夹,应该cd到debug文件夹

     

    ----------总结--------

    找不到class file, 要么是class文件根本不存在(没有build project) 要么是路径出了问题,如果路径写的对,也不一定要cd到debug文件夹。

    如果要改变生成的.h文件的路径,可以加上-d <路径> 

    javah -classpath :/Users/username/Library/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/23.4.0/appcompat-v7-23.4.0-sources.jar: -d ../../../../src/main/jni com.y.www.ndk_test.MainActivity

     

     

     

    小小的一个命令卡了我2个小时 @_@ 

  • 相关阅读:
    oracle 存储过程 技巧
    任何用户密码都能以sysdba角色登入
    DBA操作常用命令
    事务 脏数据
    Axis2 WebService(配置、发布、调用)
    C#接口
    纯CSS3实现的一些酷炫效果
    C#运算符大全_各种运算符号的概述及作用
    mvc图片上传到服务器
    C# .NET 基本概念
  • 原文地址:https://www.cnblogs.com/yidan621/p/5649616.html
Copyright © 2020-2023  润新知