如何用javah生成.h文件

     java使用起来非常方便,然而有些层面的任务用java实现起来不容易,或者我们对程序的效率很在意时,问题就来了,有时java应用需要与其他的语言环境交互,那么我们应该咋办呢。java的设计者必然也考虑了这方面,这就是本地方法存在的主要原因,帮助我们需要与一些底层系统如操作系统或某些硬件交换信息时的情况。本地方法正是这样一种交流机制:它为我们提供了一个非常简洁的接口,但我们无需去了解java应用之外的繁琐的细节。
     当确实需要这么做的时候,java的关键字native就至关重要了,native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前语言环境的文件,而是在用其他语言(如c)实现的文件中。java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
     JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(sdk)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用Java代码.


JNI的书写步骤如下:
a.编写带有native声明的方法的Java类
b.使用javac命令编译编写的Java类
c.使用java -jni ****来生成后缀名为.h的头文件
d.使用其他语言(C、C++)实现本地方法
e.将本地方法编写的文件生成动态链接库

下面是代码示例:

a.类文件

 

package com.mw.mbox.boss.demo;

public class HelloWorld {
	public native void hello(String name,int i, boolean b);
	
	static{
		System.loadLibrary("hello");
	}
	
	public static void main(String[] args) {
		new HelloWorld().hello("saoyong",1,true);
	}
}

b.生成class文件

 

window环境下cmd到java文件所在的目录,使用命令javac HelloWorld.java编译生成class文件

c.生成.h文件

使用命令javah -jni HelloWorld在生成.h文件的时候,发现目录下并没有生成的文件。

我的解决方案是set classpath=F:\svnproject\mbox-boss\src\main\java\ 然后

javah -jni com.mw.mbox.boss.demo.HelloWorld,这样就ok了,使用命令的时候要带上具体的文件目录。(我的HelloWorld.java在本地F:\svnproject\mbox-boss\src\main\java\com\mw\mbox\boss\demo\下)

 总结:在使用javah -jni命令前,先set classpath=文件所在的目录,到src那一层级,然后使用javah -jni要带上文件的包名就可以。

后面的d、e两步就不演示了,该篇博客要解决的问题到此已经处理完毕了。

 

 

### 回答1: 使用 javah 工具生成 C 语言头文件的方法如下: 1. 确保你的 Java 环境已经安装完毕,并且已经将 JDK 的 bin 目录加入了系统的 PATH 环境变量中。 2. 打开命令提示符或终端窗口,进入到包含你的 Java文件的目录中。 3. 使用 javah 命令生成 C 语言头文件,命令的格式如下: ``` javah -jni classname ``` 其中,classname 表示你要生成文件Java 类的名称。例如,如果你要生成 com.example.HelloWorld 类的头文件,则可以使用如下命令: ``` javah -jni com.example.HelloWorld ``` 4. 生成的头文件将会保存在当前目录中,文件名为 classname.h,例如,上述例子中生成的头文件名为 com_example_HelloWorld.h。 注意: - 使用 javah 工具生成的头文件仅用于 Java Native Interface (JNI) 的 C 和 C++ 代码的编写,不能直接在 C 或 C++ 中使用。 - 使用 javah 工具生成文件时,必须确保相应的 Java 类已经编译过了。 - 使用 javah 工具生成的头文件中的函数名称和参数名称都是 JNI 规范要求的格式,如果你想在 C 或 C++ 中使用头文件,需要先了解 JNI 规范。 ### 回答2: 使用javah工具生成C语言头文件的步骤如下: 1. 确保你已经正确安装了Java开发工具包(JDK)并配置了环境变量。 2. 打开命令提示符(Windows)或终端(Linux/MacOS)。 3. 切换到包含Java类的目录。例如,假设你的类位于包com.test中,你需要先进入包的上级目录,然后执行以下命令: ``` cd path/to/parent/directory ``` 4. 使用javah命令生成C语言头文件。命令的基本语法为: ``` javah com.test.ExampleClass ``` 将"com.test.ExampleClass"替换为你想要生成文件Java类的完整路径。 5. 执行上述命令后,javah工具会自动在当前目录生成一个与Java类名相同的C语言头文件,以.h为后缀。 6. 可以将生成的头文件移动到任何你想要的位置,以便在C或C++代码中引用。 需要注意的是,使用javah工具生成C语言头文件只适用于包含native方法的Java类。native方法是使用其他编程语言(如C/C++)编写的方法,通过生成文件,可以使得Java程序可以调用这些底层语言实现的代码。 ### 回答3: javah 工具是 Java Development Kit (JDK) 提供的一个命令行工具,用于生成Java 类中的本地方法(Native Method)对应的 C 语言头文件。具体的使用步骤如下: 1. 确保你已经正确安装了 JDK。可以通过在命令行中输入 "javac -version" 来验证 JDK 是否已经正确安装和配置。 2. 在命令行中切换到你的 Java 类所在的目录。 3. 编译 Java文件。使用 "javac YourClass.java" 命令来编译你的 Java文件。这会生成相应的 .class 文件。 4. 使用 javah 命令生成 C 语言头文件。在命令行中输入 "javah YourClass" 命令来生成与你的 Java 类中的本地方法对应的 C 语言头文件。这将在同一目录下生成一个名为 "YourClass.h" 的头文件。 5. 现在你可以在 C 语言程序中包含这个生成的头文件,并实现对应的本地方法。 值得注意的是,自 Java 8 版本以后,新推出了更加现代化的 "javac -h" 选项,此选项已取代了 javah 命令。因此,在更高版本的 JDK 中,你可以使用 "javac -h YourClass.java" 命令来生成 C 语言头文件。 总结起来,使用 javah 工具生成 C 语言头文件的步骤就是:编译 Java文件,然后使用 javah 命令来生成文件
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值