Linking errors with GCJ and SWT

James Lee jlee23@umbc.edu
Wed Feb 16 15:57:00 GMT 2005


Hello,
I am trying to compile a simple "Hello, World!" written in Java with
SWT. The code is as follows:
 
 import org.eclipse.swt.*; 
 import org.eclipse.swt.widgets.*; 
 
 public class HelloWorld { 
 public static void main(String[] args) { 
 Display display = new Display(); 
 Shell shell = new Shell(display); 
 
 Label label = new Label(shell, SWT.NONE); 
 label.setText("Hello, World!"); 
 label.pack(); 
 
 shell.pack(); 
 shell.open(); 
 while (!shell.isDisposed()) 
 if (!display.readAndDispatch()) 
 display.sleep(); 
 display.dispose(); 
 } 
 }
Compiling it with javac and running it with Sun's java works just fine,
however my initial attraction to SWT was the fact that it could be
compiled natively using GCJ. I have had relatively good experiences with
GCJ in the past with both non-GUI and java-gnome programs. Unfortunately
it's just not working out for me this time. I have installed SWT using
Portage. The SWT jar is in my classpath so the program compiles with gcj
fine like:
 jlee@thinkpad ~ $ gcj -c HelloWorld.java 
 jlee@thinkpad ~ $
That leaves me with HelloWorld.o Then I have to link it, but it just
won't work. I have specified the location of the SWT library using the
-l option, but I just get the same error:
 jlee@thinkpad ~ $ gcj --main=HelloWorld -lswt-gtk-3106 HelloWorld.o 
 HelloWorld.o(.text+0x1e): In function `HelloWorld::main(JArray<java::lang::String*>*)': 
 : undefined reference to `org::eclipse::swt::widgets::Display::class$' 
 HelloWorld.o(.text+0x2d): In function `HelloWorld::main(JArray<java::lang::String*>*)': 
 : undefined reference to `org::eclipse::swt::widgets::Display::Display()' 
 HelloWorld.o(.text+0x41): In function `HelloWorld::main(JArray<java::lang::String*>*)': 
 : undefined reference to `org::eclipse::swt::widgets::Shell::class$' 
 HelloWorld.o(.text+0x57): In function `HelloWorld::main(JArray<java::lang::String*>*)': 
 : undefined reference to `org::eclipse::swt::widgets::Shell::Shell(org::eclipse::swt::widgets::Display*)' 
 HelloWorld.o(.text+0x6b): In function `HelloWorld::main(JArray<java::lang::String*>*)': 
 : undefined reference to `org::eclipse::swt::widgets::Label::class$' 
 HelloWorld.o(.text+0x89): In function `HelloWorld::main(JArray<java::lang::String*>*)': 
 : undefined reference to `org::eclipse::swt::widgets::Label::Label(org::eclipse::swt::widgets::Composite*, int)' 
 collect2: ld returned 1 exit status 
 jlee@thinkpad ~ $
There are a few swt libraries in /usr/lib:
 /usr/lib/libswt-atk-gtk-3106.so /usr/lib/libswt-mozilla-gtk-3106.so 
 /usr/lib/libswt-gnome-gtk-3106.so /usr/lib/libswt-pi-gtk-3106.so 
 /usr/lib/libswt-gtk-3106.so
I have tried every and all of them. I just don't understand. I'd be
happy to provide anymore information. Thanks for the help!
James Lee
jlee23@umbc.edu


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /