public inbox for java@gcc.gnu.org
 help / color / mirror / Atom feed
From: Mark Wielaard <mark@klomp.org>
To: ffileppo <ffileppo@libero.it>
Cc: aph <aph@redhat.com>, java <java@gcc.gnu.org>
Subject: Re: gcj 4.4 and AWT toolkit
Date: Thu, 14 Aug 2008 13:13:00 -0000	[thread overview]
Message-ID: <1218719589.10071.67.camel@dijkstra.wildebeest.org> (raw)
In-Reply-To: <K5JQ99$7A04074DF755F0E36885EF5E0B7533CA@libero.it>

[-- Attachment #1: Type: text/plain, Size: 2018 bytes --]

Hi Francesco,

On Wed, 2008-08-13 at 17:41 +0200, ffileppo wrote:
> What's the difference between using "../gcc/configure" and "../configure" ?

Just depends on where you have your gcc-obj build dir. I have it next to
my gcc source dir. You probably have it inside your gcc source dir.

I am now seeing your failure also. Don't know why I wasn't seeing it
earlier. But I must have tried the wrong thing since I now see why it
cannot have worked.

The latest GNU Classpath import added this patch:

2008-02-08  Roman Kennke  <kennke@aicas.com>

        * gnu/java/awt/peer/gtk/CairoGraphics2D.java,
        * gnu/java/awt/peer/gtk/GdkFontPeer.java,
        * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
        * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
        * gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
        * gnu/java/awt/peer/gtk/GtkComponentPeer.java,
        * gnu/java/awt/peer/gtk/GtkToolkit.java: Only call
        System.loadLibrary() when configured so.

As Roman explained:

        This changes the System.loadLibrary() calls in the GTK peers, so
        that they are only called when configured so. This is important
        for VMs that can't or don't want to link dynamically, e.g. when
        creating full static linked binaries like Jamaica.

And indeed libgcj has a gnu/classpath/Configuration.java which defines
INIT_LOAD_LIBRARY = false. And so gtkpeer.so is never loaded. Causing
the native jni function call to not resolve giving the
java.awt.AWTError: Cannot load AWT toolkit:
gnu.java.awt.peer.gtk.GtkToolkit [...] Caused by:
java.lang.UnsatisfiedLinkError: initIDs

libgcj does this because it has its own native cni implementation and
doesn't use the classpath jni libraries. Except for... the gtk+ one.

Have to think about the cleanest way to solve this. But reverting this
part of the import (attached) should get you going for now. You'll need
to configure with --enable-java-maintainer-mode (see the libjava/HACKING
file for more explanation).

Cheers,

Mark

[-- Attachment #2: gtk-loadlibrary-revert.patch --]
[-- Type: text/x-patch, Size: 4102 bytes --]

Index: classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java
===================================================================
--- classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java	(revision 138388)
+++ classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java	(working copy)
@@ -38,8 +38,6 @@
 
 package gnu.java.awt.peer.gtk;
 
-import gnu.classpath.Configuration;
-
 import gnu.java.awt.ClasspathToolkit;
 
 import java.awt.AWTPermission;
@@ -122,10 +120,7 @@
 {
   static 
   {
-    if (Configuration.INIT_LOAD_LIBRARY)
-      {
-        System.loadLibrary("gtkpeer");
-      }
+    System.loadLibrary("gtkpeer");
   }
 
   /**
Index: classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java
===================================================================
--- classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java	(revision 138388)
+++ classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java	(working copy)
@@ -38,7 +38,6 @@
 
 package gnu.java.awt.peer.gtk;
 
-import gnu.classpath.Configuration;
 import gnu.classpath.Pointer;
 
 import gnu.java.awt.ClasspathToolkit;
@@ -167,10 +166,7 @@
 
   static 
   {
-    if (Configuration.INIT_LOAD_LIBRARY)
-      {
-        System.loadLibrary("gtkpeer");
-      }
+    System.loadLibrary("gtkpeer");
 
     initStaticState ();
 
Index: classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
===================================================================
--- classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java	(revision 138388)
+++ classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java	(working copy)
@@ -68,17 +68,13 @@
 import javax.imageio.stream.ImageInputStream;
 import javax.imageio.stream.ImageOutputStream;
 
-import gnu.classpath.Configuration;
 import gnu.classpath.Pointer;
 
 public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
 {
   static 
   {
-    if (Configuration.INIT_LOAD_LIBRARY)
-      {
-        System.loadLibrary("gtkpeer");
-      }
+    System.loadLibrary("gtkpeer");
 
     initStaticState ();
   }
Index: classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
===================================================================
--- classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java	(revision 138388)
+++ classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java	(working copy)
@@ -38,7 +38,6 @@
 
 package gnu.java.awt.peer.gtk;
 
-import gnu.classpath.Configuration;
 import gnu.java.awt.ClasspathGraphicsEnvironment;
 
 import java.awt.Font;
@@ -73,10 +72,7 @@
 
   static
   {
-    if (Configuration.INIT_LOAD_LIBRARY)
-      {
-        System.loadLibrary("gtkpeer");
-      }
+    System.loadLibrary("gtkpeer");
 
     GtkToolkit.initializeGlobalIDs();
     initIDs();
Index: classpath/gnu/java/awt/peer/gtk/GtkToolkit.java
===================================================================
--- classpath/gnu/java/awt/peer/gtk/GtkToolkit.java	(revision 138388)
+++ classpath/gnu/java/awt/peer/gtk/GtkToolkit.java	(working copy)
@@ -39,8 +39,6 @@
 
 package gnu.java.awt.peer.gtk;
 
-import gnu.classpath.Configuration;
-
 import gnu.java.awt.AWTUtilities;
 import gnu.java.awt.EmbeddedWindow;
 import gnu.java.awt.dnd.GtkMouseDragGestureRecognizer;
@@ -172,10 +170,7 @@
 
   static
   {
-    if (Configuration.INIT_LOAD_LIBRARY)
-      {
-        System.loadLibrary("gtkpeer");
-      }
+    System.loadLibrary("gtkpeer");
 
     /**
      * Gotta do that first.
Index: classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
===================================================================
--- classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java	(revision 138388)
+++ classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java	(working copy)
@@ -46,7 +46,6 @@
 import java.awt.Window;
 import java.util.ArrayList;
 
-import gnu.classpath.Configuration;
 import gnu.classpath.Pointer;
 
 class GdkScreenGraphicsDevice extends GraphicsDevice
@@ -99,11 +98,7 @@
 
   static
   {
-    if (Configuration.INIT_LOAD_LIBRARY)
-      {
-        System.loadLibrary("gtkpeer");
-      }
-
+    System.loadLibrary("gtkpeer");
     GtkToolkit.initializeGlobalIDs();
     initIDs();
   }

  reply	other threads:[~2008-08-14 13:13 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-13 15:43 ffileppo
2008-08-14 13:13 ` Mark Wielaard [this message]
  -- strict thread matches above, loose matches on Subject: below --
2008-08-14 16:59 ffileppo
2008-08-14 17:03 ` Andrew Haley
2008-08-17 21:45   ` Mark Wielaard
2008-08-18 18:38     ` Andrew John Hughes
2008-08-21 17:13       ` Tom Tromey
2008-08-22  0:49         ` Andrew John Hughes
2008-08-22  1:15           ` Tom Tromey
2008-08-29 23:21             ` Andrew John Hughes
2008-08-14 13:24 ffileppo
2008-08-01 11:33 ffileppo
2008-07-31 18:21 ffileppo
2008-07-31 13:09 ffileppo
2008-07-31 14:30 ` Andrew Haley
2008-07-31 12:46 ffileppo
2008-07-31 12:51 ` Andrew Haley
2008-07-31 12:08 ffileppo
2008-07-31 12:17 ` Andrew Haley
2008-07-31 11:51 ffileppo
2008-07-31 11:55 ` Andrew Haley
2008-08-01 11:23 ` Mark Wielaard
2008-07-30 19:46 ffileppo
2008-07-31  8:40 ` Andrew Haley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1218719589.10071.67.camel@dijkstra.wildebeest.org \
    --to=mark@klomp.org \
    --cc=aph@redhat.com \
    --cc=ffileppo@libero.it \
    --cc=java@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).