我正在用 c++ 编写一个 java 本机库,并在本机库本身中使用异常处理,但是一旦我抛出异常,库就会崩溃。这是我的简单测试程序,当我从 Java 测试中调用它时,只要抛出异常,它就会崩溃。捕获块不工作。任何我想念的想法。谢谢。
#include "Test.h"
#include <iostream>
JNIEXPORT void JNICALL Java_Test_helloWorld(JNIEnv *, jobject)
{
std::cout<<"Hello World";
try {
throw 1;
}
catch(int )
{
std::cout<<" catch int block"<<std::endl;
}
catch(...)
{
std::cout<<" catch block"<<std::endl;
}
}
编译和链接:
g++ -m64 -fPIC -fexceptions -c test.cpp
g++ -shared -m64 -Wl,-soname,libtest.so -Wl,-shared-libgcc test.o -o libtest.so
$ java -d64 -Djava.library.path=/home/vkumar/projects/test -cp $CLASSPATH Test
terminate called after throwing an instance of 'int'
terminate called recursively
Hello World^CAbort (core dumped)