请教RFT如何获取动态密码值
登录某用户,需要用动态密码,动态密码目前是用一个小软件生成的,开发提供了生成动态密码的dll文件。如何用Rft来获取这个动态密码值。动态密码每分钟改变一次值。 java调用dll中的方法即可。这需要开发帮忙,提供的dll在编译的时候必须有约定好的stub。问题解决了
谢谢各位,还有开发的同事的帮忙。这个头大的问题解决了。我把过程写下来给各位参考,尤其是jni的细节,它让我走了不少的弯路。第一步就是要开发提供你要调用的函数的借口,
然后我给大家一个jni调用的比较详细的例子。
http://www.blogjava.net/sham2k/archive/2008/02/11/179602.html
这个例子,讲的比较详细了。要注意几点
1.包路径,生成的.h文件一定要包含完整的包路径 。而且要在包所在的上一目录执行javac和javah
比如我的包路径是:package com.test ,文件是test.java,com所在的上一目录是ibm
2.在生成class,正确的写法是进入ibm目录执行 javac com/test/test.java
生成.h文件的正确写法是,进入ibm目录执行 javah -classpath . -jni com.test.java注意一定要是classpath后面有个.
好了,剩下的就是,把生成的.h文件交给开发,让开发生成你需要的.dll文件。你再来调用里面的方法就可以了。 前一个问题解决了。我又有了新的问题。请高手指教。我用jni调用本地方法的时候,调用动态库,相同的项目在eclipse运行就 ok,它用的jdk是1.4.2。但是在RFT7.0上运行就报Segmentation error 错误如下:
Unhandled exception
Type=Segmentation error vmState=0x00040000
J9Generic_Signal_Number=00000004 ExceptionCode=c0000005 ExceptionAddress=7C921669 ContextFlags=0001003f
Handler1=7EFB0630 Handler2=7F057A80 InaccessibleAddress=00000000
EDI=33567000 ESI=33566FF0 EAX=33566FF8 EBX=33560000
ECX=00000000 EDX=00000000
EIP=7C921669 ESP=0006F2BC EBP=0006F2C8
Module=C:\WINDOWS\system32\ntdll.dll
Module_base_address=7C910000 Offset_in_DLL=00011669
Target=2_30_20070322_12058_lHdSMR (Windows XP 5.1 build 2600 Service Pack 3)
CPU=x86 (1 logical CPUs) (0x5fe6c000 RAM)
JVMDUMP006I Processing Dump Event "gpf", detail "" - Please Wait.
JVMDUMP007I JVM Requesting System Dump using 'D:\IBM\SDP70\core.20080804.100042.2644.dmp'
请高手帮忙!
我后来尝试用RFT自带的jdk生成.h文件,开发也用的是jdk自带的lib。但是问题依然。
[ 本帖最后由 zm1015 于 2008-11-3 16:36 编辑 ] 问题解决了,重装了RFT。郁闷
页:
[1]