zoukankan      html  css  js  c++  java
  • 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个小时 @_@ 

  • 相关阅读:
    [Chrome_OS]Crosh Shell终端 基础命令
    [HTML5_WebSockets]HTML 5 Web Sockets应用初探
    [HTML5_WebWorkers]利用HTML5的window.postMessage实现跨域通信
    [HTML5_资源]49个超炫的HTML 5示例
    [HTML5_资源]国外模版网站
    [HTML5_JS跨域]JavaScript跨域总结与解决办法
    [HTML5_资源]给网页设计师的30个HTML5学习资源
    [HTML5_WebWorkers]HTML5 web通信(跨文档通信/通道通信)简介
    [HTML5_JQueryMobile]20个很棒的 jQuery Mobile 教程
    LeetCode-513. Find Bottom Left Tree Value
  • 原文地址:https://www.cnblogs.com/yidan621/p/5649616.html
Copyright © 2011-2022 走看看