JNI入门中helloworld常见问题

走远了吗. 提交于 2019-12-07 11:58:13

看了我转载的那篇JNI入门感觉确实写得很好,但是配置细节没怎么说明,我这里说明一下。

主要是按照完成helloworld这个程序的步骤出现的问题。所有的程 序都是通过命令行来编译的。

问题一:NotClassDeff....Error
        当然了这个问题绝对是classpath没有配置好,.;...  这个东西想必大家已经很熟悉了,不过有两点需要说明:1.注意文件路径中斜杠的方向,2.在win7中配置好环境变量不需要重新启动系统,只需要重新启动命令行。解决了这个问题你应该就可以得到.class文件

问题二:javah 不是命令或文件。。。 或javac 不是命令或文件。。。
        这是因为没有设置好path,只要把java安装目录/bin,放在path中即可,还有win7只需要重启命令行。解决了这两个问题你就可以得到 hello.h文件了

问题三:在写好c程序后使用cl命令编译成dll会出现:XXX.lib not find 。。。 或 stdio.h not find
        这就像java命令找不到 classpath一样, 只要添加环境变量 include = vc安装目录下的include文件;lib=vc安装目录下的lib文件即可,重启命令行。下面你就会得到dll文件。

其他的一些问题很可能是由于你的文件名,属性名等等没有对应好而造成的,请仔细检查。
    "java中System.loadLibrary加载的 name"  =  "dll的文件名"
    ".c中应用的头文件.h" = "java的文件名"
    ".c中的方法名" = "java中native声明的方法名"
    "java类名要和文件名一致"

另外在说明一下javah这个命令,它和javac不同 ,javac只要在当前目录就可以编译.java文件,javah需要在工程的根目录,比如你的类在包cn.abc下 那么 你要在cn同级目录中使用  javah cn.abc.YOURCLASSNAME

以上就是可能出现的一些环境问题,因为使用jni的都应该是有一定开发经验的了,所以我说的比较笼统。如果有任何问题,欢迎提出来。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!