Illegal use of nonvirtual function call

Shaun Jackman sjackman@gmail.com
Thu May 5 17:08:00 GMT 2005


When I compile SWT with Sun's javac and run Azureus, which uses SWT,
all's well. When I compile SWT to java bytecode using gcj -C, I get an
"Illegal use of nonvirtual function call" error message:

  java.lang.VerifyError: (class: org/eclipse/swt/dnd/DragSource$1,
method: handleEvent signature: (Lorg/eclipse/swt/widgets/Event;)V)
Illegal use of nonvirtualfunction call
        at org.eclipse.swt.dnd.DragSource.<init>(DragSource.java:178)
        at org.gudy.azureus2.ui.swt.views.MyTorrentsView.createDragDrop(MyTorrentsView.java:1270)

[Some source code snippets follow this mail.]

This looks like either a bug in SWT making use of a non-standard
"feature" in Sun's javac, or a bug in gcj. Any idea which?

I'm trying to build a package of Azureus for Debian Sarge, which uses
gcj 3.3.5. I'd be interested in knowing if the problem is fixed in
either gcj 3.4.4 or 4.0, but I'd still like to find a work-around for
3.3.5 if possible.

Please cc me in your reply. Thanks!
Shaun

gcj 3.3.5
SWT (gtk) 3.1M4
Azureus 2.3.0.0

Listener.java:
public interface Listener { void handleEvent (Event event); }

DragSource.java:178
	controlListener = new Listener () {
		public void handleEvent (Event event) { ... } };

MyTorrentsView.java:1270
    DragSource dragSource = new DragSource(getTable(), DND.DROP_MOVE);



More information about the Java mailing list