2009-07-29 10 views
0

Mac OS X 10.5.7でEclipse Cocaoを使用していますが、変数を初期化するときに無害な行でプログラムがハングします。私がそれを取り出すと、プログラムは進行します。Java getDefaultToolKit()がMac OS X 10.5をハングします

Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()。getScreenSize();

この行は、XP、Vista、Server 2003、およびMac OS X 10.4.11で問題なく動作します。私は今なぜ10.5で無限にぶら下がっているのか分かりません。何か案は?

アップデート:これは、Cocoa EclipseとCocoa SWTを使用する際のバグと思われます。下のThorbjørnの例を問題なく再現できます。私はここでテストプログラムを実行するとき、私はぶら下がりの動作を取得します。

import java.awt.Dimension; 
import org.eclipse.swt.widgets.Display; 

public class Foo { 
    static Display display = new Display(); 

    public Foo() { 
    Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); 
    System.out.println(screenSize); 
    } 

    public static void main(String[] args) { 
    Foo test = new Foo(); 
    } 
} 
+0

デバッグモードで実行し、スレッドが停止している場所を確認するためにスレッドを一時停止できますか?またはCTRL + BREAK(または同じAppleキーの組み合わせを使用してスレッドダンプを表示)を押しますか? – akarnokd

+0

私はMacユーザーではありません。私はWindowsでプログラムしますが、これはクロスプラットフォームでなければなりません。私が言うことができるのは、その行までデバッグを使用でき、F6を押すと、プログラムは次の行に進まないということです。 – Ken

+0

スレッドを一時停止することはできませんか? – akarnokd

答えて

1

次のコードは、Java 1.5とJavaの両方でのMacBook上でOS X 10.5の下でのEclipseココア3.5で完了6.

package main; 

import java.awt.Dimension; 

public class Foo { 

    public static void main(String[] args) { 
     Dimension screenSize = java.awt.Toolkit.getDefaultToolkit() 
       .getScreenSize(); 
     System.out.println(screenSize); 
    } 
} 

あなたは、あなたのシステムが異なっている方法の詳細を提供する必要があります私から。

+0

私のシステムは、新品のミニブランドです。私はできる限りソフトウェアのアップデートでそれを更新しました(Java 1.5はそれに付属しました)。私はEclipse Cocoa 3.5とSWT Cocoa 3.5を使用しています。 Macユーザーではないので、私はそのマシンのどのプロパティがその原因になるかわかりません。 – Ken

+0

Mac Mini OSは10.5.7 – Ken

+0

別注:プログラムがロードされると、Eclipseコンソールに「_NSAutoreleaseNoPool()」という項目が多数表示されます。これらの問題を解決する方法が不明な場合は、これが原因かもしれません。 – Ken

0

-Djava.awt.headless=true JVM引数を使用してアプリケーションを起動します。