C到Java的调用通过了,但是JVM以一种奇怪无法解释的方式崩溃了

C到Java的调用通过了,但是JVM以一种奇怪无法解释的方式崩溃了,第1张

C到Java的调用通过了,但是JVM以一种奇怪/无法解释的方式崩溃了

问题已解决。

搜索更多内容后,我发现了这篇文章http://docs.oracle.com/javase/1.4.2/docs/guide/jni/jni-12.html#JNI_OnLoad

在它的底部附近是一个很好的示例,说明了如何传递多个选项以及如何命名它们。原来-Xcheck:jni是作为-
DXcheck:jni传递的(jni:pedantic也可以),当我将strcpy从代码中移出后,我不再获得崩溃转储。我怀疑这是罪魁祸首,但其中一个骗人。

这是更新的代码位:

JNIEnv* create_vm(JavaVM ** jvm){    JNIEnv *env;    JavaVMInitArgs vm_args;    JavaVMOption options[2];    options[0].optionString = CLASSPATH; //"-Djava.class.path=/scratch/workareas/JTest/Java/"    options[1].optionString = "-DXcheck:jni:pedantic";    vm_args.version = JNI_VERSION_1_6; //JDK version. This indicates version 1.6    vm_args.nOptions = 2;    vm_args.options = options;    vm_args.ignoreUnrecognized = JNI_TRUE; //drop unrecognized options    int ret = JNI_CreateJavaVM(jvm, (void**) &env, &vm_args);    if (ret < 0) printf("n<<<<< Unable to Launch JVM >>>>>n");    return env;}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5462081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存