私は Eclipse の初心者で、混合 AWT/SWT アプリケーションを構築しようとしています。これが私のコードです:
public class HelloWorldSWT {
public static void main(String[] args) {
Frame frame = new Frame("My AWT Frame"); // java.awt.Frame
frame.setLayout( new BorderLayout() );
Canvas canvas = new Canvas(); // java.awt.Canvas
frame.add(canvas, BorderLayout.CENTER);
frame.setVisible(true);
Display display = new Display(); // display object to manage SWT lifecycle.
Shell swtShell = SWT_AWT.new_Shell(display, canvas);
Button m_button = new Button(swtShell, SWT.PUSH);
m_button.setText( "button" );
// invoke the AWT frame rendering by making the frame visible
// This starts the EDT
frame.setVisible(true);
// standard SWT dispatch loop
while(!swtShell.isDisposed())
{
if(!display.readAndDispatch())
display.sleep();
}
swtShell.dispose();
}
}
これは正常にコンパイルされますが、Eclipse でアプリケーションとして実行すると、次のエラーが発生します。
スレッド「メイン」での例外 java.lang.UnsatisfiedLinkError: sun.awt.SunToolkit.getAppContext(Ljava/lang/Object;)Lsun/awt/AppContext; sun.awt.SunToolkit.getAppContext (ネイティブ メソッド) で sun.awt.SunToolkit.targetToAppContext (不明なソース) で sun.awt.windows.WComponentPeer.postEvent (不明なソース) で sun.awt.windows.WComponentPeer.postPaintIfNecessary (不明)ソース) sun.awt.windows.WComponentPeer.handlePaint (ソース不明) sun.java2d.d3d.D3DScreenUpdateManager.repaintPeerTarget (ソース不明) sun.java2d.d3d.D3DScreenUpdateManager.createScreenSurface (ソース不明) sun.awt.windows .WComponentPeer.replaceSurfaceData(未知のソース) at sun.awt.windows.WComponentPeer.replaceSurfaceData(未知のソース) at sun.awt.windows.WComponentPeer.
私は何を間違っていますか?