Java com.jacob.com.ComFailException:Can';t将名称映射到dispid。随机失效

Java com.jacob.com.ComFailException:Can';t将名称映射到dispid。随机失效,java,c++,com,activexobject,jacob,Java,C++,Com,Activexobject,Jacob,我们开发了一个COM对象,它是一个.exe文件,在后台作为服务运行。我们正在尝试使用JACOB连接到对象 导言: 启动时,创建activeXcomponent并调用对象的Connect方法。Connect方法通过引用返回类的实例(写在COM对象内部),这里称为“句柄” 此句柄存储在类级别变量中。该JAVA类的实例存储在连接池中,稍后用于将来的函数调用。这是为了确保在已经初始化的对象/指针上调用下一个调用 当启动数据获取调用时,它调用另一个名为fetchData的方法,并将请求作为输入。它通过引用

我们开发了一个COM对象,它是一个.exe文件,在后台作为服务运行。我们正在尝试使用JACOB连接到对象

导言: 启动时,创建activeXcomponent并调用对象的Connect方法。Connect方法通过引用返回类的实例(写在COM对象内部),这里称为“句柄”

此句柄存储在类级别变量中。该JAVA类的实例存储在连接池中,稍后用于将来的函数调用。这是为了确保在已经初始化的对象/指针上调用下一个调用

当启动数据获取调用时,它调用另一个名为fetchData的方法,并将请求作为输入。它通过引用返回错误代码和响应。组件对象通过存储在连接池中的JAVA类的实例引用

Variant response = new Variant("", true);   //String
Variant errorCode = new Variant(0, true);
Dispatch.call(component,FETCH_DATA,handle,functionCode,request,response,errorCode);
问题陈述: 现在,在本地环境中进行测试时,我们发现一切正常,没有抛出异常。但是,在客户端环境中,我们遇到以下错误:

Caused by: com.jacob.com.ComFailException: Can't map name to dispid: fetchData 
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:625)
at com.jacob.com.Dispatch.callN(Dispatch.java:453)
at com.jacob.com.Dispatch.call(Dispatch.java:541)
我们注意到,同一代码在一次尝试中工作正常,在下一次重新启动中失败。这种行为是完全随机的,因此很难追踪

注意事项:

  • fetchData函数存在,且两边的签名完全相同
  • 代码在某一点上运行正常,在重新启动后会出现错误行为
  • 我们在某个地方读到,JACOB Library在多线程环境中行为不端这是真的吗?

    如果是,应采取什么措施使其按预期工作。 如果不是,那么为什么会随机抛出此异常

    任何想法/帮助/线索都是有用的。提前谢谢

    Caused by: com.jacob.com.ComFailException: Can't map name to dispid: fetchData 
    at com.jacob.com.Dispatch.invokev(Native Method)
    at com.jacob.com.Dispatch.invokev(Dispatch.java:625)
    at com.jacob.com.Dispatch.callN(Dispatch.java:453)
    at com.jacob.com.Dispatch.call(Dispatch.java:541)