程序结构是这样的:
JAVA中使用原生函数调用由BCB写的DLL一个函数,并传递一个字符串参数。
BCB写的DLL函数再使用CreateProcess执行另一个用DELPHI写的可执行程序A.exe,用来生成数据,并一直等到进程序退出后返回。
A.exe从数据库中取得数据后打包,并使用CreateProcess执行WinRar压缩,并一直等到WinRar退出后
返回。 现在的问题是:如果我在程序A.exe中不执行取数据、压缩的过程,JAVA程序就可以正确运行,
如果我在程序A.exe中执行取数据、压缩的过程的话,JAVA程序就会报NoSuchMethodError错误。
可以肯定DLL和A.exe都没有问题,但A.exe中取数据打包的过程比较耗时,约需要5分钟。 这是怎么回事呢?是不是DLL长时间没有返回JAVA认为是出错了?我用的是JB2006,在调试时就出错了。
JAVA中使用原生函数调用由BCB写的DLL一个函数,并传递一个字符串参数。
BCB写的DLL函数再使用CreateProcess执行另一个用DELPHI写的可执行程序A.exe,用来生成数据,并一直等到进程序退出后返回。
A.exe从数据库中取得数据后打包,并使用CreateProcess执行WinRar压缩,并一直等到WinRar退出后
返回。 现在的问题是:如果我在程序A.exe中不执行取数据、压缩的过程,JAVA程序就可以正确运行,
如果我在程序A.exe中执行取数据、压缩的过程的话,JAVA程序就会报NoSuchMethodError错误。
可以肯定DLL和A.exe都没有问题,但A.exe中取数据打包的过程比较耗时,约需要5分钟。 这是怎么回事呢?是不是DLL长时间没有返回JAVA认为是出错了?我用的是JB2006,在调试时就出错了。
后来我把自定义包全部不用import引入,改为XX.XX.XX a=new XX.XX.XX(),这样就可以了