Java JNI:EXCEPTION_ACCESS_VIOLATION:无法编写核心转储

时间:2015-08-18 08:15:41

标签: java c++ java-native-interface native

我正在尝试编写一个在java中使用的本机方法,用于速度目的,但它不起作用。它编译好,但有时它绝对没有,有时它会这样说:

`Execution protection violation
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00009f0a, pid=8768,  tid=8780
#
# JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05- b13)
# Java VM: Java HotSpot(TM) Client VM (25.5-b02 mixed mode windows-x86 )
# Problematic frame:
# C  0x00009f0a
#
# 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:
# C:\Users\Nate\Documents\Programming\eclipse\APCS\Bits\hs_err_pid8768.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.
#`

这是本机方法声明:
public static native byte[][][] createArray();

这是.cpp文件:

#include <jni.h>
#include "NativeTest.h"

JNIEXPORT jobjectArray JNICALL 
    Java_NativeTest_createArray(JNIEnv *env, jclass cls){
        printf("Native method running");
        jobjectArray joa;
        jbyteArray jba;
        jclass joaCls = env->GetObjectClass(joa);
        jclass jbaCls = env->GetObjectClass(jba); 
        return (*env).NewObjectArray(20, joaCls, (*env).NewObjectArray(20, jbaCls, (*env).NewByteArray(3)));
}

int main(){
}

如果你想看到其他任何东西,我可以发布它。错误日志对我没有任何帮助,但也许其他人可以破译它。 我听说这些错误通常是由于非法的阵列/内存访问造成的;你不能像那样初始化jarray吗?

0 个答案:

没有答案