Hi,
I'm currently trying to call Outlook COM interfaces based on JNA 4.1.0.
When trying to setBodyFormat of MailItem, I encountered the java.lang.IllegalArgumentException, with call stack listed below.
I searched the web without helpful info. Could you please give some advice? Thank you!
#Problem details#
I'm simply using setProperty("BodyFormat", (int) 1); to set the format to HTML.
The COMLateBindingObject::setProperty is:
protected void setProperty(String propertyName, int value) {
this.oleMethod(OleAuto.DISPATCH_PROPERTYPUT, null, this.getIDispatch(),
propertyName, new VARIANT(value));
}
Exception info and call stack:
java.lang.IllegalArgumentException: Can not set com.sun.jna.platform.win32.WinDef$LONG field com.sun.jna.platform.win32.Variant$VARIANT$_VARIANT$__VARIANT.lVal to java.lang.Integer
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
at java.lang.reflect.Field.set(Field.java:758)
at com.sun.jna.Structure.setFieldValue(Structure.java:591)
at com.sun.jna.Structure.setFieldValue(Structure.java:585)
at com.sun.jna.Structure.writeField(Structure.java:749)
at com.sun.jna.Union.writeField(Union.java:129)
at com.sun.jna.platform.win32.Variant$VARIANT.setValue(Variant.java:240)
at com.sun.jna.platform.win32.Variant$VARIANT.setValue(Variant.java:231)
at com.sun.jna.platform.win32.Variant$VARIANT.<init>(Variant.java:178)
at com.sun.jna.platform.win32.COM.COMLateBindingObject.setProperty(COMLateBindingObject.java:546)
at com.siebel.applets.email.CSSOLMailItem.setBodyFormat(CSSOLMailItem.java:47)
I also tried to call setProperty("BodyFormat", (short) 1); still got similar issue.
java.lang.IllegalArgumentException: Can not set com.sun.jna.platform.win32.WinDef$SHORT field com.sun.jna.platform.win32.Variant$VARIANT$_VARIANT$__VARIANT.iVal to java.lang.Short
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
at java.lang.reflect.Field.set(Field.java:758)
at com.sun.jna.Structure.setFieldValue(Structure.java:591)
at com.sun.jna.Structure.setFieldValue(Structure.java:585)
at com.sun.jna.Structure.writeField(Structure.java:749)
at com.sun.jna.Union.writeField(Union.java:129)
at com.sun.jna.platform.win32.Variant$VARIANT.setValue(Variant.java:237)
at com.sun.jna.platform.win32.Variant$VARIANT.setValue(Variant.java:231)
at com.sun.jna.platform.win32.Variant$VARIANT.<init>(Variant.java:173)
at com.sun.jna.platform.win32.COM.COMLateBindingObject.setProperty(COMLateBindingObject.java:559)
Any advice would be appreciated!
Thanks,
Athena