FIX: JActiveX fails for COM Property Declared as IUnknown (233359)
The information in this article applies to:
- Microsoft Visual J++ 6.0
- Microsoft virtual machine
- Microsoft SDK for Java 1.51
- Microsoft SDK for Java 2.0
- Microsoft SDK for Java 3.2
- Microsoft SDK for Java 2.01
- Microsoft SDK for Java 2.02
- Microsoft SDK for Java 3.0
- Microsoft SDK for Java 3.1
This article was previously published under Q233359 SYMPTOMS
The following error is generated when trying to build a Java project that imports a COM component whose property is declared as type IUnknown:
Undefined name 'stdole2.IUnknown' (J0049)
CAUSE
The problem is that JActiveX generates Java code that treats IUnknown as a user-defined type, rather than as com.ms.com.IUnknown.
RESOLUTION
The problem has been fixed for the JActiveX.exe version 3549 that is included with the SDK For Java version 3.2. For more information, visit the following Microsoft Web site:
However, if you are still using a JActiveX prior to SDK3.2, you could still work around the problem using either of the following two ways:
- Declare the property as Object in Visual Basic. It will then be exposed as
IDispatch in the type library and Object in Java.
- Use a configuration file that will tell JActiveX to use
com.ms.com.IUnknown for all types with a GUID of IID_IUnknown. The config
file will look like the following:
; IUnknown!
[{00000000-0000-0000-C000-000000000046}]
Use Class=com.ms.com.IUnknown
- If the configuration file were called mappings.jnf, JActiveX would be invoked like this:
jactivex /d . /javatlb /t mappings.jnf MyControl.DLL
- Note that the stdole2 package will not be created because there are no
referenced types.
STATUSMicrosoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.
Modification Type: | Minor | Last Reviewed: | 11/14/2005 |
---|
Keywords: | kbbug kbCompiler kbfix kbJava KB233359 |
---|
|