背景
最近使用jacob的时候,由于编译没问题,运行时报如下,我
查看代码发现是调用jacob文件时,是下面的方法报错,
ComThread.Release();
这个方法编译不报错,是因为doCoUninitialize使用native修饰的,表名这个方法实现是需要调用dll等方式实现
public static synchronized void Release() {
if (JacobObject.isDebugEnabled()) {
JacobObject.debug("ComThread: before clearObjects");
}
ROT.clearObjects();
if (JacobObject.isDebugEnabled()) {
JacobObject.debug("ComThread: before UnInit");
}
doCoUninitialize();
if (JacobObject.isDebugEnabled()) {
JacobObject.debug("ComThread: after UnInit");
}
}
public static native void doCoUninitialize();
我添加了try-catch,使用Exception尝试捕获,
catch (Exception e)
发现不好使,原来这个错误的父类跟Exception无关,如下图,跟Error有关
尝试用如下代码捕获
try{
ComThread.Release();
}catch (Error error){
JOptionPane.showMessageDialog(null,"Jacob配置错误,请把文件夹里的\n" +
"jacob-1.16-M1-x64.dll\n" +
"和\n" +
"jacob-1.16-M1-x86.dll\n" +
"两个文件复制放到目录:C:\\Windows\\System32,\n" +
"详细参考菜单【文件】——>【常见问题】","Jacob配置错误",JOptionPane.ERROR_MESSAGE);
}
发现可以
参考
Java:详解Java中的异常(Error与Exception)_王小二(海阔天空)的博客-CSDN博客《Java:详解Java中的异常(Error与Exception)》《Java:简述Java中的自定义异常》《Java:简述throw-throws异常抛出》《Java:简述try-catch-finally异常捕获》《Java:简述try-catch-finally中return返回》一、 异常机制的概述 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机...https://blog.csdn.net/qq_29229567/article/details/80773970
java.lang.NoClassDefFoundError可以捕获_iteye_1456的博客-CSDN博客原本以为类不存在的Error不能捕获,想不到是可以的,记录一下。注意,这和反射遇到的“java.lang.ClassNotFoundException”是不一样的。 以下代码,编译完后,我删除了Demo$T2.class,如果不添加try-catch,会出现:Exception in thread "main" java.lang.NoClassDefFoundError: com/a...https://blog.csdn.net/iteye_1456/article/details/82301193