如何处理对dll的java调用,该dll会引发异常访问冲突?

如何处理对dll的java调用,该dll会引发异常访问冲突?,java,java-native-interface,Java,Java Native Interface,我已经编码了一个java应用程序,通过JNI调用C++编写的线性编程求解器。在多次成功调用之后,我得到一个异常访问冲突错误,应用程序终止。 如何消除错误并保持Java应用程序运行 首先,如果dll崩溃,JVM将终止 这是首先使用JNI的缺点之一。因此,它通常不像从dll中吞咽一些异常那样简单 在您的例子中,错误提示内存单元化。您应该关注代码中的越界索引 但是,为了获得更多帮助,您应该发布代码。如果本机代码中发生访问冲突,则无法保持JVM运行 你可以做几件事 最好-没有JNI小心地调试你的lib

我已经编码了一个java应用程序,通过JNI调用C++编写的线性编程求解器。在多次成功调用之后,我得到一个异常访问冲突错误,应用程序终止。
如何消除错误并保持Java应用程序运行

首先,如果dll崩溃,JVM将终止

这是首先使用JNI的缺点之一。因此,它通常不像从dll中吞咽一些异常那样简单

在您的例子中,错误提示内存单元化。您应该关注代码中的越界索引


但是,为了获得更多帮助,您应该发布代码。如果本机代码中发生访问冲突,则无法保持JVM运行

你可以做几件事

  • 最好-没有JNI小心地调试你的lib,用小的独立C++客户端,找出这个违反的原因,并在它周围添加过多的检查(错误的指针使用,错误的内存清理等)
  • 在单独的JVM进程中运行DLL,该进程纯粹负责提供此解算器功能,并使用套接字、tcp ip、soap、rest与第二个JVM进行通信—无论您喜欢什么。然后,使用Java服务包装器之类的工具来运行第二个JVM,并以在JVM崩溃时重新启动JVM的方式对其进行配置