[Ikvm-developers] Using SWT [new problems]
Brought to you by:
jfrijters
From: David J. <ju...@or...> - 2004-08-31 20:35:05
|
Thanks for all the work on JNI! I've tried the latest snapshot. It gets me further running SWT, but there are still some bugs... Now some of my sample snippets work on SWT 2.1.3, but other don't - for different reasons. None of my SWT 3.1M1 snippets work. Here are some trace-backs - hope they're useful... Firstly, the good news is that my HelloWorld snippet that just creates a Display & Shell works under SWT2.1.3 and opens an empty window (as expected). Under SWT3.1M1 I get this error: [jungd@marvin swt-3.1M1]$ mono HelloWorldSWT.exe (<unknown>:11043): GLib-GObject-WARNING **: type name `' is too short (<unknown>:11043): GLib-GObject-CRITICAL **: file gobject.c: line 819 (g_object_new): assertion `G_TYPE_IS_OBJECT (object_type)' failed Unhandled Exception: org.eclipse.swt.SWTError: No more handles in <0x0051d> org.eclipse.swt.SWT:error (int,System.Exception,string) in <0x00012> org.eclipse.swt.SWT:error (int,System.Exception) in <0x0000f> org.eclipse.swt.SWT:error (int) in <0x0000a> org.eclipse.swt.widgets.Widget:error (int) in <0x0007e> org.eclipse.swt.widgets.Composite:createHandle (int,bool) in <0x0019d> org.eclipse.swt.widgets.Shell:createHandle (int) in <0x00011> org.eclipse.swt.widgets.Widget:createWidget (int) in <0x0004e> org.eclipse.swt.widgets.Control:createWidget (int) in <0x00039> org.eclipse.swt.widgets.Scrollable:createWidget (int) in <0x00039> org.eclipse.swt.widgets.Decorations:createWidget (int) in <0x000be> org.eclipse.swt.widgets.Shell:.ctor (org.eclipse.swt.widgets.Display,org.eclipse.swt.widgets.Shell,int,int) in <0x0001a> org.eclipse.swt.widgets.Shell:.ctor (org.eclipse.swt.widgets.Display,int) in <0x00012> org.eclipse.swt.widgets.Shell:.ctor (org.eclipse.swt.widgets.Display) in <0x00047> Snippet1:Main () My next snippet tries to open a file dialog - DirectoryDialog, and bombs with this: Unhandled Exception: System.ArgumentNullException: Argument cannot be null. Parameter name: dest in (unmanaged) (wrapper managed-to-native) System.Runtime.InteropServices.Marshal:copy_to_unmanaged (System.Array,int,intptr,int) in <0x00004> (wrapper managed-to-native) System.Runtime.InteropServices.Marshal:copy_to_unmanaged (System.Array,int,intptr,int) in <0x00013> System.Runtime.InteropServices.Marshal:Copy (char[],int,intptr,int) in <0x0007f> JNIEnv:GetCharArrayElements (JNIEnv*,intptr,intptr) in <0x00078> (wrapper native-to-managed) JNIEnv:GetCharArrayElements (JNIEnv*,intptr,intptr) On a related note, I've had a problem with Unicode strings in two other seperate projects for which I'm using IKVM - one with Apache libs like Xerces, and another with a pure java implemenation of Xlib (escher). For example, an escher app bombs with: [jungd@marvin escher-0.2.2]$ mono TestHello.exe Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for gnu.util.Environment ---> System.TypeInitializationException: An exception was thrown by the type initializer for gnu.java.io.EncodingManager ---> System.TypeInitializationException: An exception was thrown by the type initializer for java.lang.System ---> java.lang.Error: Unexpected problems with default decoder--- End of inner exception stack trace --- in (unmanaged) java.lang.System:getProperty (string) in <0x000c1> gnu.java.io.EncodingManager:.cctor () --- End of inner exception stack trace --- in (unmanaged) gnu.java.io.EncodingManager:getDecoder () in <0x0005c> java.lang.StringHelper:NewString (sbyte[],int,int) in <0x00017> java.lang.StringHelper:NewString (sbyte[]) in <0x0000b> java.lang.String:newhelper (sbyte[]) in <0x000ef> gnu.util.Environment:.cctor () --- End of inner exception stack trace --- in (unmanaged) gnu.util.Environment:value (string) in <0x00091> gnu.x11.Application:.ctor (string[]) in <0x00045> gnu.x11.test.TestHello:.ctor (string[]) in <0x00048> gnu.x11.test.TestHello:Main () I'm wondering if there is a java property I have to set or something. How do I do that for IKVM? Any idea if there is a property pertaining to unicode string encoding classes or something like that? (I ask this because Xerces(?) prints a "Warning: Could not get charToByteConverterClass!" message before returning a null.) Could this be a classpath problem? At some point I saw some ikvm.exe.config (or similar) files - what are those for? (can't seem to find any now). Cheers, -David. |