JRE检测到致命错误- EXCEPTION_ACCESS_VIOLATION (0xc0000005)
fatal error detected by the JRE - EXCEPTION_ACCESS_VIOLATION (0xc0000005)
我的c++ JNI代码,包括:
- 查找要使用的java类 调用构造函数
调用类的init函数:我尝试使用FindClass函数(JCTerminalClass)返回的jclass和GetObjectClass(obj)返回的jclass。
1. JCTerminalClass = env->FindClass("com/ibm/jc/terminal/RemoteJCTerminal"); 2. mid = env->GetMethodID(JCTerminalClass, "<init>", "()V"); if(mid !=0) { obj = env->NewObject(JCTerminalClass, mid); cout << "Object created with constructor" << endl; } 3.jclass clss = env->GetObjectClass(obj); mid = env->GetMethodID(JCTerminalClass,"init","(Ljava/lang/Object;)Lcom/ibm/jc/JCTerminal;"); /* or */ mid = env->GetMethodID(clss,"init","(Ljava/lang/Object;)Lcom/ibm/jc/JCTerminal;"); obj = (jobject)env->CallObjectMethod(obj, mid, "someString");
在这两种情况下,我在编译期间没有得到错误,并且执行顺利,直到调用CallObjectMethod,我们得到以下错误:
Java运行时环境检测到致命错误:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000028120b6, pid=4064, tid=1576
JRE版本:Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13)Java虚拟机:Java HotSpot(TM) 64位Server虚拟机(25.5-b02混合模式windows-amd64压缩ops)有问题的框架:j com.ibm.jc.terminal.RemoteJCTerminal.init (Ljava/lang/对象;)Lcom/ibm/jc/JCTerminal; + 8
写核心转储失败。默认情况下,Windows客户端版本不启用迷你转储
包含更多信息的错误报告文件保存为:
哦,我认为值得注意的是,JCTerminalClass和class没有相同的值:分别为0x1dfec60和0x1dfec50…知道这是为什么吗?既然我们讨论的是同一个类……
加上我认为对象是很好的实例化,我尝试打印一些静态的最终值…
谢谢你的帮助!
问题是"someString"
参数。init
方法期望参数是一个Java对象。
用NewStringUTF
JNI函数从char *
构造jstring
- 将数组信息存储到 c++ 向量中有一个"Access violation reading location"
- 为什么调试器引发"read access violation. this was nullptr"异常?
- Simulink "Access Violation"写入 C++ lambda 函数捕获列表中的 PWork 变量
- Qt QXmlStreamReader Access Violation
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 例外:'Access violation reading location'
- 我在发布模式下运行时收到"Access violation reading location"错误 - C++
- 如何修复我的 c++ 毕达哥拉斯三重查找器中的'access violation reading location'错误?
- 矩阵 - "Access violation writing location 0x00900B0C" - C++ 中的错误
- 如何修复此代码中的'Access violation reading location'
- 过载时出错 << "Exception thrown: read access violation.m.matrix was 0xCDDDCDDE."
- c++:链表错误" Access violation reading location"
- Q维吉特"access violation"
- System.UStrClr Access Violation
- msftedit "Access violation reading location 0x00000008"错误.dll SetWindowSub类中的RichEdit控件
- CreateBuffer 抛出一个"Access violation reading location"
- glMapBufferRange Access Violation
- 指针已初始化,但我有错误"Access violation reading location 0xCCCCCCCC".为什么?
- VC++ vector::p ush_back "Access Violation" in DLL
- "Read Access Violation: This was nullptr" 以为我分配正确...?