Here is the C++ code:
#import "path\to\catia\intel_a\code\bin\InfTypeLib.tlb" no_namespace
// ...
ApplicationPtr catia;
catia.CreateInstance("CATIA.Application");
catia->PutVisible(VARIANT_TRUE);
I want to call the same CATIA API in Java with com4j. According to com4j tutorial page, the Java definitions were generated by following command:
java -jar ..\..\tlbimp.jar -o catia -p catia InfTypeLib.tlb
But the result ClassFactory has no static methods to create COM objects.
import com4j.*;
/**
* Defines methods to create COM objects
*/
public abstract class ClassFactory {
private ClassFactory() {} // instanciation is not allowed
}
Then I tried another typelib '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}" );
}
}
When calling these methods in Java, I got
com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
I cannot find the method to create an instance for the Application interface.
Can anyone help me for this? Thanks.