美文网首页Android进阶
Java JNI中javac和javah的使用

Java JNI中javac和javah的使用

作者: 汶水一方 | 来源:发表于2018-03-31 13:24 被阅读926次

在安卓JNI开发中,经常会用到javac和javah命令,这2个命令短小精干,常有四两拨千斤之感。

这里用一个简单的例子,演示javacjavah的用法。

创建一个项目目录,这儿以~/java_demo2为例。此目录即为项目的根目录。

1. 创建目录结构

  • 包名PackageName我这里设定为com.yigangfang.demo2,所以要创建相应的目录结构:
mkdir -p com/yigangfang/demo2

参数-p的作用是,可以一次创建几个上下级目录。

2. 在目录com/yigangfang/demo2中新建文件HelloThere.java

内容如下:

package com.yigangfang.demo2; 
  
public class HelloThere {   
 
    static { 
        System.loadLibrary("HelloThere"); 
    }
 
    public static native void hello(String msg);       
 
    public static void  main(String[] args) {    
        hello("Hello, there!" );
    }
}

3. 生成.class文件

在目录com/yigangfang/demo2中执行

javac HelloThere.java

会在相同目录下生成一个文件HelloThere.class

4. 设置classpath环境变量

回到项目根目录:

cd ~/java_demo2

设置classpath变量为项目根目录:

set classpath=~/java_demo2

5. 生成头文件

在项目根目录执行:

javah -jni com.yigangfang.demo2.HelloThere

将会在根目录下生成一个头文件:com_yigangfang_demo2_HelloThere.h

内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_yigangfang_demo2_HelloThere */

#ifndef _Included_com_yigangfang_demo2_HelloThere
#define _Included_com_yigangfang_demo2_HelloThere
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_yigangfang_demo2_HelloThere
 * Method:    hello
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_com_yigangfang_demo2_HelloThere_hello
  (JNIEnv *, jclass, jstring);

#ifdef __cplusplus
}
#endif
#endif       

相关文章

  • Java JNI中javac和javah的使用

    在安卓JNI开发中,经常会用到javac和javah命令,这2个命令短小精干,常有四两拨千斤之感。 这里用一个简单...

  • 使用JNA完成调取C接口

    使用JNI的各位可能受够了中间层的限制严格的JNI文件(就连方法名也要限制),当然,可以使用javac和javah...

  • JNI编译时错误编码GBK的不可映射字符

    使用Android studio 进行JNI开发时,在java代码中声明好了native方法后需要使用javah指...

  • JNI相关知识点

    1.生成JNI头文件 javac -h . Test.java 注意正确配置Java环境变量可使用javac -...

  • NDK开发流程

    NDK开发流程 创建java类X,申明native方法 使用javac编译为.class文件 使用javah生成头...

  • javah命令 无法确定surface的签名

    使用AndroidStudio进行JNI开发时,编写好了Native方法的java文件,使用javah生成头文件报...

  • jni-03、CMakeLists、gradle配置

    查看当前设备CPU架构 javah 在jdk10及以上的版本中,已经删除了javah,使用"javac -h"命令...

  • JNI--动态注册

    之前使用到JNI中,都是通过javah命令生成对应c/c++中的方法名,其规则为:java的包名+native方法...

  • Android Studio JNI开发

    在Java类中添加Native方法 创建JNI文件夹 3.添加javah和ndk-build为 External ...

  • Android JNI学习-函数动态注册

    前面JNI开发相关的也写了几篇博客,对java中native关键字定义的方法进行注册时,都是使用Javah命令生成...

网友评论

    本文标题:Java JNI中javac和javah的使用

    本文链接:https://www.haomeiwen.com/subject/jaygcftx.html