1

Javaアプリで次の例外が発生します。

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:
Canvas3D: GraphicsConfiguration is not compatible with Canvas3D
    at javax.media.j3d.Canvas3D.checkForValidGraphicsConfig(Canvas3D.java:965)
    at javax.media.j3d.Canvas3D.<init>(Canvas3D.java:1032)
    ...etc...

Canvas3Dは次のようにインスタンス化されています:

GraphicsConfiguration graphicsConfiguration = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(graphicsConfiguration);

このコードは、1台のマシン(HP dc7900デスクトップ)では正しく機能しますが、2台の新しいマシン(HP 630ラップトップ)では機能しません。XPを実行しているすべて。

APIドキュメントによると、この例外は「指定されたGraphicsConfigurationが3Dレンダリングをサポートしていない」ことを意味します。どういう意味ですか?「優先設定」はおそらくOSから取得されたものであり、実際に可能なことを反映しています...しかし、私は少し迷っています。

バグレポートは、代替としてこのコードを提案しています:

GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().getBestConfiguration(template);
Canvas3D c3d = new Canvas3D(gc);

しかし、それは何も変わりません。

同様の 問題は、グラフィックアダプタの設定を変更するか、別のレンダラーを選択することで解決されたようです。たとえば、ビット深度を16に減らすか、Javaを-Dj3d.rend=d3dで実行しますが、何も変更されません。

4

1 に答える 1

1

これは単にJavaバージョンの非互換性であることがわかりました。1.7から1.6にダウングレードしたところ、すべてが正しく機能しました。

于 2012-07-04T23:33:54.517 に答える