gpt4 book ai didi

java - 尝试打开 Excel 工作簿时在 com.sun.proxy.$Proxy10.Open 处出现 UndeclaredThrowableException

转载 作者:行者123 更新时间:2023-12-02 05:10:56 25 4
gpt4 key购买 nike

我的插件中有一个功能,可以将一些 list 项目导出到 Excel 文件中。之前,一切工作正常,但从几天前开始,我在尝试打开 Excel 工作簿时遇到 $Proxy10.Open() 错误。我不知道这个信息是否相关,但我只能在几台计算机上重现这个问题,在其中一些计算机上,只有当我远程连接到它时,我才能重现它。

错误是:

    java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy10.Open(Unknown Source)
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at com.sun.jna.platform.win32.COM.util.ComThread.execute(ComThread.java:157)
at com.sun.jna.platform.win32.COM.util.Factory$ProxyObject2.invoke(Factory.java:93)
... 5 more

这就是我初始化 COM 子系统的方式:

Ole32.INSTANCE.CoInitializeEx(Pointer.NULL, Ole32.COINIT_MULTITHREADED);
facade.comFactory = new Factory();

这就是我初始化 Excel 应用程序的方式:

ComExcel_Application excel = facade.comFactory.createObject(ComExcel_Application.class);
facade.excelApp = excel.queryInterface(Application.class);
facade.excelApp.setVisible(true);
System.out.println("Using Excel version: " + facade.excelApp.getVersion());

这就是抛出异常的地方:

Workbook myWorkbook = excelApp.getWorkbooks().Open(fullName.toString());

我想问这个错误的根本问题是什么,欢迎任何提示。我试图查找任何相关的问题或错误,但没有找到。

最佳答案

问题出在为创建 COM 对象而初始化 Factory() 的位置。 com.sun.jna.platform.win32.COM.util.Factory 使用线程来运行调用,并且该线程施​​加执行时间上限,默认情况下为 5000 毫秒。所以我把线程的执行时间延长到了15000ms。

facade.comFactory = new Factory(new ComThread("COM Thread", 15000, new  
Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
// do something intelligent
}
}));

关于java - 尝试打开 Excel 工作簿时在 com.sun.proxy.$Proxy10.Open 处出现 UndeclaredThrowableException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56326152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com