开发工具Elipse,VC61. java生成的class文件Test.class 放到,E:\Test.class2. dll工程使用Debug模式,JNI调用已指定到VC6 Debug生成的dll。 调试参数为C:\jdk1.5.0_08\bin\java.exe -classpath .; E:\Test调用后,cmd窗口一闪,
报的错误是:
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Test最终目的是可以直接在dll里设置断点,调试里面的函数。不使用printf()或log文件。下面,我还要调试C#内的代码,也是JNI调用方式。
必须先解决目前问题呐。
报的错误是:
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Test最终目的是可以直接在dll里设置断点,调试里面的函数。不使用printf()或log文件。下面,我还要调试C#内的代码,也是JNI调用方式。
必须先解决目前问题呐。
To 1楼:
模拟?那还不得解决JNICALL,JNIEXPORT,JNIEnv *env这些问题。
等于要在C环境中先解决Java调用,才能调试dll了。这个难度估计更大。倒可以把所有接口直接也用VC类型实现一下,调试OK后再转成JNI接口去。
这个思路倒不错。To 2楼:
cmd不是Elipse使用的,而是调试VC dll时,加载外部命令java后,自动输出的。
我不习惯Elipse运行c++代码,还是喜欢老的VC6的IDE,有感情了呀。CPPUNIT.这个东东,你可以灌点知识给我,没接触过,等忙完了再研究。
MAIN函数调试问题,和1楼类似,有点难度。To All:
正因为以前没使用过JNI,才来问问大家以前可有办法直接调试啊。
能省时间就省了,时间就是生命。没有现成方法,那只能自己解决去了。
http://topic.csdn.net/u/20081016/21/436b2d9f-d3bc-4f64-ab88-b16a25233bb8.html
这里面讲的很细了,你可以直接弄明白一切的.
谢谢提供参考,终于可以正常调试了,更喜欢VC了。
目前做java 没办法啊~~(刘德华 天下无贼里的说话口气),
做完该项目,做psp开发去了,呵呵~~
又可以回到c或c++开发了,还有linux,,, :D最后总结一下:
1. 原来的workpath,我没有设置。
2. 参数设置不正确。
-classpath 一直带有.;(一直以为java中带这个,总是没错的。)
原错误:
-classpath .;E:\WorkBench\Java\WorkSpace\...\classes
E:\WorkBench\Java\WorkSpace\...\classes\Test
正确的:-classpath E:\WorkBench\Java\WorkSpace\...\classes Test
3. dll输出路径可以任意指定,不必和class文件在一起。我目前就是这么做的。原调试设置Dialog,都是自己摸索出的。没试过调试java类文件和dll一起运行。
有点意思。再次谢谢各位。