【问题标题】:How to bridge Java to CATIA COM API with com4j如何使用 com4j 将 Java 桥接到 CATIA COM API
【发布时间】:2014-02-14 22:35:24
【问题描述】:

这是 C++ 代码:

#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 定义是通过以下命令生成的:

java -jar ..\..\tlbimp.jar -o catia -p catia InfTypeLib.tlb

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

import com4j.*;

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

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

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中调用这些方法时,我得到了

com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153

我找不到为应用程序接口创建实例的方法。

谁能帮我解决这个问题?谢谢。

【问题讨论】:

    标签: java com com4j catia


    【解决方案1】:

    为 InfTypeLib.tlb 生成的 ClassFactory 不包含创建 Application 实例的静态方法。

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

    public static catia.Application createApplication() {
        return COM4J.createInstance( org.huys.catia.Application.class, "{87fd6f40-e252-11d5-8040-0010b5fa1031}" );
    }
    

    “CATIA.Application”的 GUID 可以在注册表中找到。或者只是用字符串替换它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多