使用J-INTEROP开发Android OPC DA客户端遇JIException错误求助
针对你遇到的org.jinterop.dcom.common.JIException: The object name is not found [0xC0000034]错误,结合PC客户端可正常连接的情况,可按以下步骤排查解决:
验证ProgID与CLSID的匹配性
服务器端的ProgID可能存在变体,直接使用CLSID替代ProgID尝试连接。在KepServer所在Windows服务器的注册表中,定位HKEY_CLASSES_ROOT\KEPware.KEPServerEx.V4\CLSID,复制对应的CLSID值,然后修改代码:val comServer = JIComServer(JIClsid.valueOf("这里填复制的CLSID"), "192.168.1.11", session)若使用CLSID可连接,说明ProgID在Android端的J-INTEROP解析存在问题。
检查DCOM端口与防火墙配置
确保Windows服务器防火墙允许Android设备访问以下端口:- DCOM默认端口135
- KepServer DCOM配置中指定的动态端口范围(可在KepServer的DCOM属性→“终结点”中设置固定端口范围,避免动态端口的防火墙拦截)
同时确认Android设备与服务器在同一网络,无VPN、网络隔离等限制导致端口无法访问。
修正会话账号配置
确保J-INTEROP会话的用户名包含服务器主机名/域名前缀,避免本地账号解析错误:session.setUserName(JIString("服务器主机名\有权限的用户名")) session.setPassword(JIString("对应密码"))该账号需已在Windows服务器的DCOM权限设置及KepServer的OPC访问权限中配置允许远程连接。
确认KepServer的远程访问设置
打开KepServerEX管理界面,进入“OPC Settings”→“DA Settings”,确保勾选“Allow Remote Clients”选项,同时检查“Security”标签页中已添加Android端使用的账号权限。排查J-INTEROP版本兼容性
若使用较旧版本的J-INTEROP,可能存在Android平台的DCOM解析兼容性问题,尝试升级至最新稳定版本后重新测试。
内容的提问来源于stack exchange,提问作者Ariel Violla

