飞不动的鱼 2019-07-31 15:34
浏览 644

JAVA使用htmlunit中的activeX功能,但是jacob报错 Can't find moniker,如何解决?

htmlunit开启activeX

webClient.getOptions().setActiveXNative(true);

会报错:

com.jacob.com.ComFailException: Can't find moniker
    at com.jacob.com.Dispatch.createInstanceNative(Native Method)
    at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
    at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)

需要用到jacob.jar
项目目前导入1.19,JDK1.8,64位WIN10。

尝试过网上的更换32位JDK已及1.7JDK以及各个版本的jacob。

IE中的activeX能够正常使用,并且官网htmlunit官网示例中

final ActiveXComponent activeXComponent = new ActiveXComponent("InternetExplorer.Application");
final boolean busy = activeXComponent.getProperty("Busy").getBoolean();
System.out.println(busy);

也无问题。
但是在java代码中就是会报错Can't find moniker,网上也没查出个所以然来。

  1. 初步判断跟htmlunit无关(错误信息是jacob初始化的时候的错误)
  2. 跟jacob也无关(因为并不是所有的clsid在初始化时都会报错)

怀疑是dll的问题,但是个人并不懂dll,不清楚在什么情况下会导致jacob报错Can't find moniker。也尝试过Regsvr32注册,失败了。VC,VB的运行库也都有。也弄了个32位的Win10实验,也失败。反正网上各种都可能性的言论都试过了。

如果是因为dll编写的原因导致的,麻烦有大佬能告知一下是什么情况下会导致这个问题。

真心求教怎么解决这问题。。。脑壳痛啊

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 基于卷积神经网络的声纹识别
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 CSAPPattacklab
    • ¥15 一直显示正在等待HID—ISP
    • ¥15 Python turtle 画图
    • ¥15 stm32开发clion时遇到的编译问题