我正在开发一个应用程序,并决定将java更新为java7。执行此操作并将适当的值设置为env。变量$ PATH和$ JAVA_HOME,我收到以下错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f19addeaa34, pid=28052, tid=139748278572864
#
# JRE version: Java(TM) SE Runtime Environment (7.0_40-b43) (build 1.7.0_40-b43)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.0-b56 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x644a34] get_method_id(JNIEnv_*, _jclass*, char const*, char const*, bool, Thread*)+0x84
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
感谢任何帮助。
更新:Java和JavaC:
java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)
javac -version
javac 1.7.0_40
答案 0 :(得分:0)
当您调用NULL
时,您正在将clazz
作为GetMethodID
参数传递,因此程序在尝试运行该方法时会收到SEGV
信号。发生这种情况可能是因为在您之前加载它时找不到您正在使用的类,并且您没有进行错误检查以检测它。所以:
FindClass
函数,请检查它是否返回NULL。CLASSPATH
环境变量,或者在创建JVM时是否需要设置java.class.path
系统属性。