【问题标题】:Unable to create DirectX D3D context. Neither Hardware and Software are available无法创建 DirectX D3D 上下文。硬件和软件均不可用
【发布时间】:2015-07-31 06:58:46
【问题描述】:

我正在尝试使用 java3D 在 java GUI 中导入一个 3D 飞机模型。它在我的 pc 中运行良好。我创建了一个 jar 文件,它可以在任何使用 netbeans 的 pc 上运行。当我尝试在其他电脑上运行这个 jar 文件时,它会抛出以下错误:

无法创建 DirectX D3D 上下文。硬件和软件都不是 可用。请更新您的视频卡驱动程序并获取 最新的 DirectX 可在http://microsoft.com/directx 获得

上述问题的可能原因是什么以及如何解决。

【问题讨论】:

  • 其他 3D 程序(例如游戏)是否有效?
  • @immibis 从未尝试过,因为它是实验室电脑,您认为问题是由于图形驱动程序过时造成的吗?
  • 我检查了,它不允许我运行任何其他 java 3D 程序。

标签: java java-3d


【解决方案1】:

确保您的程序使用 Java3D 1.6.0 而不是 Java3D 1.5.2 或更早版本(似乎是这种情况)。然后,安装适当的 OpenGL 驱动程序(从 GPU 制造商、NVidia、AMD 或 Intel 的网站获取)。查看那些使用 Java3D 1.6.0 并制作胖 JAR 的教程:

http://jogamp.org/wiki/index.php/Downloading_and_installing_Java3D

http://jogamp.org/wiki/index.php/JogAmp_JAR_File_Handling#Fat-Jar

Java3D 1.5.2 的维护已在几年前停止。 JogAmp 社区仅维护 Java3D 1.6.0,如下所述:

http://jogamp.org/wiki/index.php/Java3D_Overview

http://forum.jogamp.org/JogAmp-s-Java3D-continuation-Java3D-1-6-0-and-later-td4030907.html

Java3D 1.6.0 不像 Java3D 1.5.2 那样依赖 Direct3D。它专门使用 JOGL 来访问硬件加速。

您当前的消息表明没有可用的驱动程序或当前的驱动程序已过时。尽管如此,我还是不建议您使用过时的 Java3D 版本。

【讨论】:

  • 我无法实现您所说的。我下载了 java 3D 1.6 版本的 jar 文件并将其添加到 java 路径中,还下载了相应的 .dll 库并将其放在 java.library.path 中。但我仍然在线程“main”java.lang.NoClassDefFoundError:javax/media/nativewindow/CapabilitiesChooser中收到以下错误异常
  • 我认为问题在于没有使用当前版本的 Java3D,但现在我不知道如何在 Netbeans 中安装 Java 3D
  • @Ranjan 你没有按照我的教程,没有DLL可以下载,不需要设置Java库路径,你的安装必须是干净的,以避免与旧的冲突Java3D 和/或 JOGL 版本。 JOGL 使用 GlueGen 选择正确的 JAR,从中提取和加载本机库。请按照我的教程中描述的步骤进行操作,而不是猜测您必须做什么:gouessej.wordpress.com/2012/08/01/…
  • 对于Netbeans,在本小节中有说明:gouessej.wordpress.com/2012/08/01/… 不要太快,仔细阅读我写的内容,它会起作用。
  • 嗨@gouessej 我无法理解您教程的这一部分:您只需将上面的所有 JAR 复制到同一目录中(以便 JogAmp 知道在自动提取过程中在哪里可以找到本机库和加载)我如何知道哪个目录可以让 JogAmp 找到本机库?我做了什么我会告诉你:EX_3D是我的项目;我把你的教程中提到的所有 jar 放在 D:\Ranjan\EX_3D\lib 我通过右键单击库添加了所有那些非本地 jar 到项目中->添加 jar/文件夹
猜你喜欢
  • 1970-01-01
  • 2013-08-03
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多