这几天自己一直在琢磨使用java 读取dll 文件(专业词汇我不会说,好像是说java 动态读取本地库什么的),在网上搜索了一些资料,和示例代码,按照要求去的时候,在用javah 命令的时候,总是提示下面的错误:
错误: 无法访问 net.test.TestDll
找不到文件 net.estTestDll.class
javadoc: 错误 - 找不到类 net.test.TestDll。
Error: 未在命令行中指定任何类。请尝试使用 -help。
然后看见网上有很多人也遇到这样的问题,帮助解决的人,也很多,可是我即使按照帮助提供的解决方式还是不行,后来,经过再三努力,终于发现问题原因所在,原来别人提示:
在编译生成class文件后,要在 包的上一级目录下,执行命令:javah -classpath . -jni packagename.classname
比如,我使用的时候Eclipse 开发工具, 目录为上面的 D:workspace,在里面新建的web工程,名字叫testIDCard ,因为是建的web 工程,所以下面的目录符合web工程规范,即 有这样的目录结构
WebRootWEB-INFclasses>
下面的 net.test 是我放置class文件的包名,好的,我把我的正确执行命令的 语句粘出来:
D:/workspace/testIDCard/WebRoot/WEB-INF/classes>javah -classpath . -jni net.test.TestDll
大家可能注意不到,在 -classpath 和-jni 之间有一个 点(.) 而且之间是需要空格的,也就是说在写完-classpath命令后 ,空格 ,点 然后 -jni (这个命令可以不写,默认的),执行正常。
生成的 .h 文件位置在:
D:/workspace/testIDCard/WebRoot/WEB-INF/classes
我耽误时间也就是在这个 点 上,网上给的都没有强调这个点,而且后面要有空格,我写出来,一个是给自己以后的提醒,我害怕自己长时间如果不用的话,会忘记,另一个是希望能对网络上的朋友有所帮助,当然,你如果没有遇到我这样的问题,或者说明你比我厉害,或者说,你很幸运。