D:\我的文档\workspace\PrepareForExam\src>javah -classpath D:\我的文档\workspace\
PrepareForExam\src\com\example\myclass -d d:/ -jni com.example.myclass.jni_test
错误:无法访问 com.example.myclass.jni_test
未找到 com.example.myclass.jni_test 的类文件
javadoc: 错误 - 找不到类 com.example.myclass.jni_test。
Error: 未在命令行中指定任何类。请尝试使用 -help。

本来想用javah生成java调用C语言用的头文件的,没想到使用上一直受挫。在这里简单地介绍以下javah的使用

假设我们已经有了这个类,准备用它生成调用C语言的头文件。另外,这个Java文件是在路径“D:\我的文档\workspace\PrepareForExam\scr”下,包“package com.example.myclass;”中的

package com.example.myclass;
public class jni_test {
private native final void init();
private native final void init2(int a,int b);
}

1、首先我们要编译一下这个类,以便得到类对应的*.class

为了偷懒,给这个类直接添上一个main方法,将这类作为运行一下(如下图所示)。这样子我们就得到了jni_test对应的class文件,在路径“D:\我的文档\workspace\PrepareForExam\bin\com\example\myclass”下。

2、我们要开始写javah的命令,以便生成对应的C语言头文件

D:\我的文档\workspace\PrepareForExam\src>javah -classpath D:\我的文档\workspace\PrepareForExam\bin -d d:/ -jni
 com.example.myclass.jni_test

其中java中各个命令的意思是

-classpath <路径> 用于装入类的路径
-d <目录> 输出目录
-jni 生成 JNI样式的头文件(默认)

注意到以上我们命令中指定的路径

注意到我们的命令符的执行位置是源代码目录”D:\我的文档\workspace\PrepareForExam\src

-classpath  后面的路径是指包”com.example.myclass”所在的根路径(如下图所示)

-jni 后面的路径是包名+类名

3、最终输出的C语言头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_myclass_jni_test */ #ifndef _Included_com_example_myclass_jni_test
#define _Included_com_example_myclass_jni_test
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_example_myclass_jni_test
* Method: init
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_example_myclass_jni_1test_init
(JNIEnv *, jobject); /*
* Class: com_example_myclass_jni_test
* Method: init2
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_com_example_myclass_jni_1test_init2
(JNIEnv *, jobject, jint, jint); #ifdef __cplusplus
}
#endif
#endif

Javah提示未找到 ..的类文件的更多相关文章

  1. Javah提示未找到 ..的类

    Javah相关错误,如下图所示:

  2. oracle 安装提示未找到文件安装

    安装oracle 过程中提示未找到文件 E:\app\xxj\product\11.2.0\dbhome_1\owb\external\oc4j_applications\applications\W ...

  3. CentOS 7 使用unzip解压zip文件提示未找到命令的解决方法

    故障现象: 解决方法: 如果你使用unzip命令解压.zip文件,提示未找到命令,可能是你没有安装unzip软件,下面是安装方法 [root@localhost www]# yum install - ...

  4. ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案

    摘要: ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案 在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置 ...

  5. VS Code 提示‘未找到Git。请安装Git,或在“git.path”设置中配置’

    一.情况说明 1.描述 从Git上克隆出代码,用vscode打开项目提示“未找到Git.请安装Git,或在“git.path”设置中配置” 2.截图 二.报错原因 .没有安装Git .没有设置Git路 ...

  6. oracle select into 的时候提示未找到数据

    ); begin '; --在select into 后面添加exception 错误处理机制 exception when no_data_found then version:= 'hhh '; ...

  7. Ubuntu、Windows输入命令appium-doctor提示未找到命令

    输入命令:appium-doctor时,一直报错,提示“未找到命令”,但是输入命令:appium -v能够正确输出我安装版本,这是怎么回事呢? 原来appiu-doctor在1.5.3版本之后没有了需 ...

  8. 安装的SQL Server2008 R2版的连接不到本地数据,提示未找到或无法访问服务器。----复制自百度知道

    安装的SQL Server2008 R2版的连接不到本地数据,提示未找到或无法访问服务器.使用Windows身份验证 2012-09-17 00:23hj168926 | 分类:数据库DB | 浏览3 ...

  9. VS2012 提示未找到与约束 ContractName 匹配的倒出

    问题描述: 今天由于开发需要,我安装了一下 Vs 2015 按照之后 打开原来的项目 vs2012 打开,点击类文件提示错误 未找到与约束 ContractName 匹配的倒出 解决办法: 1  去微 ...

随机推荐

  1. An attempt was made to load a program with an incorrect format

      用.net调用一个C++ 32位的DLL, 编译的时候选择x86, 在部署到一个64位的机器上的时候报错:"An attempt was made to load a program w ...

  2. angularjs发送delete请求传参数的方法

    angularjs使用$http.delete()发送请求,默认是没法通过变量来传参数

  3. CodeForces 689C Mike and Chocolate Thieves (二分)

    原题: Description Bad news came to Mike's village, some thieves stole a bunch of chocolates from the l ...

  4. phpPgAdmin安装与配置

    1.phpPgAdmin不需要安装,直接从Sourceforge下载压缩包,解压到“/var/www/”文件夹下即可. 解压后,要为该文件夹赋予root用户和root组的权限 chown -R roo ...

  5. LoadRunner ---检查点

    判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为 200 OK ,那么VuGen 就认为脚本正确地运行了,并且是运行通过的.在绝大多数系统出错时会返回错误页面码? 不 ...

  6. if条件里比较浮点数

    晚上看会儿书,基础的东西,很多都不熟练,不得不佩服那些人真的很厉害,为啥会想到那些,我这傻脑袋是想不到,暂时...... 比较3.3333与3 #!/bin/bash var1=`echo " ...

  7. Azure DW

    1. 安装环境a. 安装环境https://www.microsoft.com/web/downloads/platform.aspx b. InputImport-Module 'C:\Progra ...

  8. a==null和a.equals("null")的区别

    equals 是值比较,==是比较内存 A==B,比较句柄,就是比较变量A,B的地址存放的东西,比如int A=0;String B="bbbb";那么变量A的地址方的就是0,B的 ...

  9. TCP/ip协议栈之内核调优

    大并发带来服务器各种层出不穷的问题,我们要善用服务器系统内核,因为其性能优于用户态的玩意 注:若想永久保存参数,可将其加入到/etc/sysctl.conf中,执行sysctl -p使其永久生效,临时 ...

  10. vagrant 安装使用 win7

    第一步.安装VirtualBox和vagrant 下载地址: https://www.virtualbox.org/wiki/Downloads http://downloads.vagrantup. ...