看了我转载的那篇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的都应该是有一定开发经验的了,所以我说的比较笼统。如果有任何问题,欢迎提出来。
来源:oschina
链接:https://my.oschina.net/u/146773/blog/76469