我在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);
该代码在一台机器(HP dc7900台式机)上正常运行,但在几台较新的机器(HP 630笔记本电脑)上则正常运行。所有正在运行的XP。
API docs表示此异常表示“指定的GraphicsConfiguration不支持3D渲染”。这意味着什么? “首选配置”大概是从操作系统获得的,因此反映了实际可行的方法……但是我有点迷茫。
bug report建议使用以下代码作为替代:
GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
getDefaultScreenDevice().getBestConfiguration(template);
Canvas3D c3d = new Canvas3D(gc);
但这并没有改变任何东西。
Similar problems似乎已通过修改图形适配器设置或选择其他渲染器来解决,例如:将位深度减小为16,或使用
-Dj3d.rend=d3d
运行Java,但这样做不会改变任何内容。 最佳答案
事实证明,这仅仅是Java版本的不兼容性:我从1.7降级到1.6,一切正常。