This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
SWT 3 and gcj
- From: Rutger Ovidius <ovid at mailandnews dot com>
- To: java at gcc dot gnu dot org
- Date: Tue, 14 Oct 2003 01:02:06 -0400
- Subject: SWT 3 and gcj
Has anyone had success with SWT 3 and gcj?
Since SWT 2 has so many bugs, I would like to compile my application with SWT
3. I am attempting this on windows.
Eclipse Milestone 4 was recently released. SWT 3 from Milestone 4 is what I am
using. (www.eclipse.org)
With gcj 3.3.1, I get many verification problems when trying to compile from
the SWT.jar file (.class files). When compiling from the source .java files,
I eventually succeed in building a libswt.a file, if I remove some of the
source files from the CLASSPATH and compile them from outside of the
CLASSPATH. (I'm still not sure why this is necessary)
With the thisiscool 3.4 build: (gcc version 3.4 20031006 (experimental)), I
get
less errors when compiling from .java source (only 2), but seemingly more
fatal:
./org/eclipse/swt/custom/StyledText.java:162: internal compiler error: tree
check: expected class 'd', have 'x' (error_mark) in make_nested_class_name, at
java/parse.y:3484
But, moving this file outside of the CLASSPATH and compiling it from there
seems to work.
I use the build.sh from the thisiscool package for SWT building.
(gcj -fjni -c -o <all java files>, ar -rcs *.o libswt.a, ranlib libswt.a)
Once I create my libswt.a, I link my test app to it just as I do with SWT2.
My SWT2 libswt.a works fine, but nothing I try with SWT3 will work. Getting a
simple Display fails. (The swt-win32-3024.dll is in the same directory and is
not the problem).
Exception in thread "main" java.lang.NullPointerException
at __GLOBAL__I__ZN4Main4mainEP6JArrayIPN4java4lang6StringEE
(F:\testswt\Main.java:1)
When I compile with "javac" and "java" run it, it works just fine with SWT3.
Please let me know if you have had success with SWT3 and gcj. Thanks.
---
public class Main {
public static void main( String[] args ) {
Display display = new Display( );
Shell shell = new Shell( display );
shell.setLayout( new FillLayout( ) );
shell.open( );
while ( !shell.isDisposed( ) ) {
if ( !display.readAndDispatch( ) ) {
display.sleep( );
}
}
}
}