> Wow, on a search through my sent email (since my inbox doesn't keep
> things as long...) I found this in a previous response to you some
> time back.
> 
> You can try them yourself if you want.  Compile them (they are in the
> usual build these days) then do a little trick Jim Blair recommends
> which is to create a directory outside of classpath and symbolically
> link to classpath/lib/gnu/java/awt/peer/gtk from
> <outsidedir>/gnu/java/awt/peer.  Place <outsidedir> in your
> classpath.  Place the native/gnu.java.awt.peer.gtk/.libs in your
> LD_LIBRARY_PATH.  Using the JDK from Blackdown 1.1.x with native
> threads configured, launch some graphical program with the
> -Dawt.toolkit=gnu.java.awt.peer.gtk.GtkToolkit flag for the 'java' VM.

I don't know why the external directory and symlink is necessary. Can you explain?

I tried it with the IBM JDK 1.18 JDK, this was my command:

skami> echo $LD_LIBRARY_PATH
/home/jewel/kissme/cvs/lib/classpath/awt
..
Binary file 
/home/jewel/java/cvsclasspath/classpath/gnu/java/awt/peer/gtk/GtkToolkit.class matches
/home/jewel/java/cvsclasspath/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java:48:    
System.out.println("loading library");     
..
skami> /usr/local/jdk118/bin/java -Dawt.toolkit=gnu.java.awt.peer.gtk.GtkToolkit 
-classpath 
/usr/local/jdk118/lib/classes.zip:/home/jewel/kissme:/home/jewel/java/cvsclasspath/classpath
 kissme_test.FrameTest
loading library
init

The JVM obviously loads the native code and starts executing it, but it then goes into 
a loop, the CPU usage just goes way up and nothing happens.

In contrast, the output with my JVM is:

Dispatcher created
Starting dispatchher run loop
loading library
Looping....
init
returned
end
TRYING TO GET INTO GTKMAIN
ACQUIRED LOCK TO RUN GTKMAIN
Setting peer gnu.java.awt.peer.gtk.GtkFramePeer@40e6ceb0 for 
kissme_test.FrameTest(null)
Looping....
peer is null in java.awt.Label(null)
invalidating
invalidating
Looping....
Looping....

Why isn't the dispatcher starting with the IBM JVM? Is there a thread/locking problem 
here? I don't think this JVM uses emulated threads.

I tried it with the external symlink, same behaviour.

I tried a 1.2.2 blackdown JDK, but I get this error:

Exception in thread "main" java.awt.AWTError: Toolkit not found: 
gnu.java.awt.peer.gtk.GtkToolkit
        at java.awt.Toolkit$2.run(Toolkit.java:497)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:488)
        at java.awt.Window.getToolkit(Window.java:416)
        at java.awt.Frame.addNotify(Frame.java:270)
        at java.awt.Window.show(Window.java:278)
        at kissme_test.FrameTest.<init>(FrameTest.java:12)
        at kissme_test.FrameTest.main(FrameTest.java:26)

I suppose I should go find a 1.1 Blackdown JDK.

Thanks for the help and tips, I would love to get the GTK peers working with my JVM, 
it will open up a whole lot of applications that my JVM could never run previously.

John Leuner



_______________________________________________
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath

Reply via email to