import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
public class MainWindow extends ApplicationWindow {
public MainWindow() {
super( null );
}
protected Control createContents( Composite a_parent ) {
return a_parent;
}
static public void main( String[] args ) {
MainWindow mainWindow = new MainWindow();
mainWindow.setBlockOnOpen( true );
mainWindow.open();
Display.getCurrent().dispose();
}
Wenn ich das Programm mit Eclipse laufen lasse, läuft alles bestens.
Wenn ich es aber extern (aus einem jar-archive) starte, bleibt es
merkwürdiger Weise stehen und behindert den ganzen Rechner. Das Fenster
lässt sich nicht verschieben. Wenn ich versuche es zu vergrößern, wird
folgendes geworfen
Exception in thread "Thread-20" org.eclipse.swt.SWTException: Invalid
thread access
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Display.error(Unknown Source)
at org.eclipse.swt.widgets.Display.checkDevice(Unknown Source)
at org.eclipse.swt.widgets.Display.getCursorLocation(Unknown Source)
at org.eclipse.swt.widgets.Display.mouseHoverProc(Unknown Source)
Exception in thread "main" org.eclipse.swt.SWTException: Device is disposed
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Display.error(Unknown Source)
at org.eclipse.swt.widgets.Display.checkDevice(Unknown Source)
at org.eclipse.swt.widgets.Display.update(Unknown Source)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:827)
at org.eclipse.jface.window.Window.open(Window.java:796)
at peter.Gui.Gui.show(Gui.java:18)
at peter.Main.<init>(Main.java:21)
at peter.Main.main(Main.java:25)
Die Klassen Gui und Main machen effektiv das gleiche wie die obrige main
Methode. Ich erzeuge keine Threads.
Wenn ich das Fenster nicht derartig kastriert aufbaue, dann werden schon
beim Aufbau Exceptions geworfen. Dabei werden die StyledText Widgets
nicht gezeigt.
Was ist los???
Das ganze läuft auf einem PPC Mac.
Die folgenden Biliotheken werden mit eingebunden:
org.eclipse.core.commands_3.3.0.I20070605-0010.jar
org.eclipse.equinox.common_3.3.0.v20070426.jar
org.eclipse.jface_3.3.2.M20080207-0800.jar
org.eclipse.jface.databinding_1.1.1.M20080207-0800.jar
org.eclipse.jface.text_3.3.2.r332_20071017-0800.jar
org.eclipse.osgi_3.3.2.R33x_v20080105.jar
org.eclipse.ui.workbench_3.3.2.M20080207-0800.jar
swt.jar
Das verwendete Java ist:
build 1.5.0_13-119, mixed mode, sharing
> Wenn ich das Programm mit Eclipse laufen lasse, läuft alles bestens.
> Wenn ich es aber extern (aus einem jar-archive) starte, bleibt es
> merkwürdiger Weise stehen und behindert den ganzen Rechner. Das Fenster
> lässt sich nicht verschieben. Wenn ich versuche es zu vergrößern, wird
> folgendes geworfen
[...]
> Das ganze läuft auf einem PPC Mac.
Vielleicht fehlt der JVM-Parameter "-XstartOnFirstThread"?
Siehe auch:
http://www.eclipse.org/swt/faq.php#carbonapp
http://www.eclipse.org/swt/macosx/
Gruss
Olaf