为了账号安全,请及时绑定邮箱和手机立即绑定

尝试打开 excel 工作簿时在 com.sun.proxy.$Proxy10.Open

尝试打开 excel 工作簿时在 com.sun.proxy.$Proxy10.Open

潇潇雨雨 2022-12-15 16:31:53
我在一个插件中有一个功能,可以将一些清单项目导出到 Excel 文件中。之前,一切正常,但从几天前开始,我在尝试打开 excel 工作簿时遇到 $Proxy10.Open() 错误。我不知道这个信息是否相关,但我只能在几台计算机上重现这个问题,在其中一些计算机上我只能在我远程连接到它时重现它。错误是:    java.lang.reflect.UndeclaredThrowableExceptionat com.sun.proxy.$Proxy10.Open(Unknown Source)    Caused by: java.util.concurrent.TimeoutExceptionat 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());我想问一下这个错误的根本问题是什么,欢迎任何提示。我试图找到任何相关的问题或错误,但没有找到。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

问题出在为 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 

                        } 

                    })); 


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信