首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用com4j桥接Java到CATIA COM API

如何用com4j桥接Java到CATIA COM API
EN

Stack Overflow用户
提问于 2012-10-10 22:26:09
回答 1查看 2K关注 0票数 0

下面是C++代码:

代码语言:javascript
复制
#import "path\to\catia\intel_a\code\bin\InfTypeLib.tlb" no_namespace

// ...

ApplicationPtr catia;

catia.CreateInstance("CATIA.Application");

catia->PutVisible(VARIANT_TRUE);

我想用com4j在Java语言中调用相同的CATIA API。根据com4j教程页面,Java定义是通过以下命令生成的:

代码语言:javascript
复制
java -jar ..\..\tlbimp.jar -o catia -p catia InfTypeLib.tlb

但是结果ClassFactory没有创建COM对象的静态方法。

代码语言:javascript
复制
import com4j.*;

/**
 * Defines methods to create COM objects
 */
public abstract class ClassFactory {
  private ClassFactory() {} // instanciation is not allowed
}

然后我尝试了另一个类型库'CATIAAppTypeLib.tlb‘。

代码语言:javascript
复制
import com4j.*;

/**
 * Defines methods to create COM objects
 */
public abstract class ClassFactory {
  private ClassFactory() {} // instanciation is not allowed


  public static org.huys.catia.AppType._CATIAApp createCATIAAppObj() {
    return COM4J.createInstance( org.huys.catia.AppType._CATIAApp.class, "{5A29422A-F2B0-11D4-A3AA-00D0B756AD5D}" );
  }

  public static org.huys.catia.AppType.CATIAVBAHostingApplication createCATIAVBAHostingApplicationImpl() {
    return COM4J.createInstance( org.huys.catia.AppType.CATIAVBAHostingApplication.class, "{0663D095-471D-11D2-9AA3-00A024941EF0}" );
  }
}

在Java中调用这些方法时,我得到了

代码语言:javascript
复制
com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153

我找不到为Application接口创建实例的方法。

有人能帮我吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-13 21:23:16

为InfTypeLib.tlb生成的ClassFactory不包含用于创建应用程序实例的静态方法。

这可以通过手动添加方法来解决。

代码语言:javascript
复制
public static catia.Application createApplication() {
    return COM4J.createInstance( org.huys.catia.Application.class, "{87fd6f40-e252-11d5-8040-0010b5fa1031}" );
}

可以在注册表中找到"CATIA.Application“的GUID。或者直接将其替换为字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12821774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档