Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX异常\u访问\u冲突_Java_Javafx_Jvm_Access Violation_Directx 11 - Fatal编程技术网

JavaFX异常\u访问\u冲突

JavaFX异常\u访问\u冲突,java,javafx,jvm,access-violation,directx-11,Java,Javafx,Jvm,Access Violation,Directx 11,我对JavaFX桌面应用程序有一个问题,特别是3d渲染功能。 每次我尝试构建和启动JavaFX应用程序时,JVM crshes和我得到的错误与以下错误类似: # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000000000000, pid=8440, tid=9008 # # JRE vers

我对JavaFX桌面应用程序有一个问题,特别是3d渲染功能。 每次我尝试构建和启动JavaFX应用程序时,JVM crshes和我得到的错误与以下错误类似:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000000000000, pid=8440, tid=9008
#
# JRE version: Java(TM) SE Runtime Environment (7.0_51-b13) (build 1.7.0_51-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  0x0000000000000000
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\apps\desktop\hs_err_pid8440.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
整个日志:

我尝试了不同的java版本(1.7_51、1.7_60以及1.8_5),我尝试了更新图形卡驱动程序。 有些项目确实启动了,但只要我想显示一些“更复杂”的效果(即悬停按钮),我就会得到同样的异常

从stacktrace判断,我相信这与directX有关

j  com.sun.prism.d3d.D3DVertexBuffer.nDrawIndexedQuads(J[F[BI)I+0
j  com.sun.prism.d3d.D3DVertexBuffer.drawQuads(I)V+13
j  com.sun.prism.impl.VertexBuffer.flush()V+12
我在使用Windows8.1和DirectX11的机器上工作。也许这不会有什么帮助,但我还在这里粘贴DirectX诊断工具日志:


感谢您的输入。

崩溃发生在
C:\Windows\system32\igdumdim64.dll中的偏移量
0xe5fe9

此库是“英特尔高清图形驱动程序”的一部分

下面是如何从崩溃日志中查找此项的快速提示

# Problematic frame:
# C  0x0000000000000000
零指令指针意味着有一个间接调用,目标地址恰好是
NULL
。此调用的返回地址可能位于堆栈顶部

Top of Stack: (sp=0x000000000ef4d398)
0x000000000ef4d398:   00007ffb308b5fe9 000000000e979800
00007ffb308b5fe9
是保存的返回地址。让我们找到它所属的范围

Dynamic libraries:
...
0x00007ffb307d0000 - 0x00007ffb31019000      C:\Windows\system32\igdumdim64.dll
通过减去基址来查找库中的偏移量:
0x00007ffb308b5fe9-0x00007ffb307d0000=0xe5fe9

接下来,有了dll,我们就可以反汇编它并计算出给定偏移量下的确切函数

附加说明

还有一个特定于Windows的Java标志
-XX:+CreateMinidumpOnCrash
,它有助于生成更有意义的崩溃转储以供分析。

您应该尝试创建一个。仅凭这些日志,不太可能有人能够帮助您。从崩溃日志中我可以发现,应用程序在
C:\Windows\system32\igdumdim64.dll
库(英特尔HD图形驱动程序的一部分)中的偏移量0xe5fe9处崩溃。如果没有这个特定的库,我无法准确地命名函数,但无论如何,这几乎没有帮助。有一个特定于Windows的Java标志
-XX:+CreateMinidumpOnCrash
,它有助于生成更有意义的崩溃转储以供分析。好的,多亏了apangin,我找到了一个解决方案。结果是宏碁放错了一些与我的HD4400不完全兼容的英特尔高清驱动程序。我所要做的就是删除旧的HD驱动程序,并安装从英特尔网站下载的专门针对我的CPU的最新版本。阿潘金-你可以在这里回答,我会投赞成票@Kyllopardiun-这里的MCV示例是什么?没有任何我可以粘贴的代码示例-所有内容都在日志中。@ember我很高兴您解决了这个问题。我复制了我的评论作为答案,并简要解释了如何阅读崩溃日志。