我正在开发一个基于swing的java应用程序,它通过加载DLL来使用第三方库函数。
DLL中的一些功能调用exit(1)
来关闭整个java应用程序。是否有任何解决方案可以使我的JVM在遇到exit(1)
时保持活动状态。我无法访问C源代码。
答案 0 :(得分:6)
调用System.exit()
的第三方库已损坏。调用C exit()
库方法的第三方库更加破碎。向供应商提交错误报告并考虑转向更好的替代方案。
您可以使用阻止呼叫的安全管理器阻止System.exit()
工作。但我不确定来自DLL的调用是否会被安全管理器控制。
答案 1 :(得分:3)
如果你不能改变DLL的行为方式,并且不能以不会调用exit()
的方式使用它,你最好的选择可能是在另一个进程的上下文中调用它的功能。然后,这个其他过程将会停止,并且您的主要过程不会受到影响。
这是否是您案件中的实际解决方法,我不知道。
答案 2 :(得分:0)
exit()是exit(),你无能为力。抱怨DLL的供应商。