JNI:class xxx could not be found
2006-05-10 22:28 晓风残月 阅读(1108) 评论(1) 编辑 收藏 举报
由于毕业设计的需要,选用的是J2EE来实现,主要负责的“压缩算法”部门问题就黑大了,又对于我这个菜鸟级别的Java GreenHand来说,更是雪上加霜^§§^
终于压缩算法是完成,用C实现(lzo,完善以后偶将post到园里面的请大家执教),JNI调用,今天终于开始研究JNI了,终于还是碰了一大钉子:
一点java经验都没有,就google了一番,选择一篇非常经典,收录于Sun中文社区的:例解 VC++ 6.0 实现 JNI也算是权威的吧。
按着陈健明老师的guidance,对于JNI的实现机制基本是明朗了。但是,当正常生成jWinMsgBox.class,然后使用javah -jni edu.netcom.jni.WinMsgBox 准备生成header的时候总是Error:
由于这里使用了包,因此第一种情况:javah WinMsgBox显然是不会成功的(其中-jni是可省的),然而为什么
javah -jni edu.netcom.jni.WinMsgBox也不会成功呢?陈健明老师的原文中就是这样的。
实在不行,那偶就加上完整路径吧:
非常抱歉,还是not found!这下可急了,看看javah命令的说明吧:
哦,看到了,好像-classpath是个解决方案:
哈哈,Good!edu_netcom_jni_WinMsgBox.h 终于出现啦。
原来是javah找不到class啊。回想下DOS路径符,其实,既然是当然目录,直接用 . (小角句点就可以啦):
本来是同一目录下,应该是不需要指定的路径的,而且为什么javac没有指定路径确可以编译成功呢?
这个疑问再研究了,继续奋斗^_^!
PS:Java新手,第一不经传的问题,竟然让我花了这么的时间,大家见笑啦。由于javablogs还没有给偶“通行证”只好先post上来了^_^
Modified at 2006年5月20日18:30:55
今天看一个同学的CLASSPATH:
D:\j2sdk1.4.2_11\lib\tools.jar;E:\Dev Tools\Db server\MS Sql2000 for JDBC\lib\msbase.jar;E:\Dev Tools\Db server\MS Sql2000 for JDBC\lib\mssqlserver.jar;E:\Dev Tools\Db server\MS Sql2000 for JDBC\lib\msutil.jar;.
注意到其结尾有一个".",代表当前路径,原来还是可以直接这样加的啊,回来试试了一下,嘿嘿确实可以,使用javah对同目录下的.java就不需要使用 /classpath 制定路径了
终于压缩算法是完成,用C实现(lzo,完善以后偶将post到园里面的请大家执教),JNI调用,今天终于开始研究JNI了,终于还是碰了一大钉子:
一点java经验都没有,就google了一番,选择一篇非常经典,收录于Sun中文社区的:例解 VC++ 6.0 实现 JNI也算是权威的吧。
按着陈健明老师的guidance,对于JNI的实现机制基本是明朗了。但是,当正常生成jWinMsgBox.class,然后使用javah -jni edu.netcom.jni.WinMsgBox 准备生成header的时候总是Error:
由于这里使用了包,因此第一种情况:javah WinMsgBox显然是不会成功的(其中-jni是可省的),然而为什么
javah -jni edu.netcom.jni.WinMsgBox也不会成功呢?陈健明老师的原文中就是这样的。
实在不行,那偶就加上完整路径吧:
非常抱歉,还是not found!这下可急了,看看javah命令的说明吧:
哦,看到了,好像-classpath是个解决方案:
哈哈,Good!edu_netcom_jni_WinMsgBox.h 终于出现啦。
原来是javah找不到class啊。回想下DOS路径符,其实,既然是当然目录,直接用 . (小角句点就可以啦):
本来是同一目录下,应该是不需要指定的路径的,而且为什么javac没有指定路径确可以编译成功呢?
这个疑问再研究了,继续奋斗^_^!
PS:Java新手,第一不经传的问题,竟然让我花了这么的时间,大家见笑啦。由于javablogs还没有给偶“通行证”只好先post上来了^_^
Modified at 2006年5月20日18:30:55
今天看一个同学的CLASSPATH:
D:\j2sdk1.4.2_11\lib\tools.jar;E:\Dev Tools\Db server\MS Sql2000 for JDBC\lib\msbase.jar;E:\Dev Tools\Db server\MS Sql2000 for JDBC\lib\mssqlserver.jar;E:\Dev Tools\Db server\MS Sql2000 for JDBC\lib\msutil.jar;.
注意到其结尾有一个".",代表当前路径,原来还是可以直接这样加的啊,回来试试了一下,嘿嘿确实可以,使用javah对同目录下的.java就不需要使用 /classpath 制定路径了