有一个用DLL编写的函数,由我的java代码调用。该函数在java中声明为本机函数。假设函数有3个参数。当我在带有两个参数的java代码中使用该函数时,它工作得很好。但当我用三个参数调用本机函数时,它会给出以下错误。
运行时异常:未捕获的运行时异常。
本机方法被重写,这意味着可以使用任意数量的参数调用它。所有参数都是字符串类型。
因此,当使用两个参数调用该方法时,它总是有效的。但如果我们用3个参数调用。它在前2-3次工作,然后抛出运行时异常。
所以我只想知道这个问题是与DLL中实现的函数有关,还是我的java代码中的问题。我在Thread中调用了本机函数,这个本机函数正在使用外部windows资源。因为它有时会起作用,我认为线程没有正常工作。
请提出建议。
示例代码:
本机函数声明的Java代码:
系统LoadLibrary(“demo”)//demo是包含本机函数实现的.dll。
fn_dmeo(字符串1,字符串2);
fn_demo(字符串1,字符串2,字符串3);//此函数打开记事本
fn_demo的实现是用dll编写的。
所以我在Thread.run()中调用fn_demo(“”、“abc”、“xyz”)
有两个参数,第一个为空,它总是有效的。
如果我这样做fn_demo(“pqr”、“abc”、“xyz”)。有时它会工作,有时它会抛出运行时异常。
为什么?