java.io.IOException: 系统找不到指定的路径 at org.apache.poi.util.TempFile.createTempFile

本文解决了一个关于在Tomcat环境下运行的应用程序尝试导出Excel文件时出现的 IOException 错误。该错误提示系统找不到指定的路径,原因在于缺少 temp 文件夹。通过在 Tomcat 目录下创建 temp 文件夹可以解决此问题。
java.io.IOException: 系统找不到指定的路径
...
at java.io.createTempFile<Unknown Source>
at org.apache.poi.util.TempFile$DefaultTempFileCreationStrategy.createTempFile<TempFile.java:105>
at org.apache.poi.util.TempFile.createTempFile<TempFile.java:60>

可以看到,错误中频繁提到 createTempFile。

如果是在tomcat部署了项目,startup启动后,试图使用软件导出excel文件,遇到这个错误,很有可能是因为tomcat里的temp文件夹缺失,新建一个temp文件夹即可。
在这里插入图片描述

2025-12-01 09:35:00.167 INFO 43091 --- [tp251210093-627] c.k.w.c.OnlinePreviewController : 预览文件url:http://61.155.96.134:33808/web/userfiles/fileupload/202511/1993219102440484866.doc,previewType:OFFICE 2025-12-01 09:35:00.360 INFO 43091 --- [ter-poolentry-4] o.j.local.task.LocalConversionTask : Executing local conversion task [doc -> pdf]... 2025-12-01 09:37:00.360 INFO 43091 --- [tp251210093-627] o.j.l.office.LocalOfficeProcessManager : Restarting due to task timeout... 2025-12-01 09:37:00.360 INFO 43091 --- [tp251210093-627] o.j.l.office.LocalOfficeProcessManager : Trying to forcibly terminate process: 'socket,host=127.0.0.1,port=2001,tcpNoDelay=1;urp;StarOffice.ServiceManager'; pid: 62483 2025-12-01 09:37:00.372 INFO 43091 --- [ssageDispatcher] o.j.local.office.OfficeConnection : Disconnected from 'socket,host=127.0.0.1,port=2001,tcpNoDelay=1' 2025-12-01 09:37:00.372 WARN 43091 --- [ssageDispatcher] o.j.l.o.LocalOfficeManagerPoolEntry : Connection lost unexpectedly; attempting restart 2025-12-01 09:37:00.372 INFO 43091 --- [ssageDispatcher] o.j.l.office.LocalOfficeProcessManager : Restarting due to lost connection... 2025-12-01 09:37:00.372 INFO 43091 --- [er-offprocmng-0] o.j.l.office.LocalOfficeProcessManager : Process exited with code 137 2025-12-01 09:37:00.375 ERROR 43091 --- [ter-poolentry-4] o.j.local.task.LocalConversionTask : Local conversion failed. com.sun.star.lang.DisposedException: null at com.sun.star.lib.uno.environments.remote.JobQueue.removeJob(JobQueue.java:210) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:330) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:303) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:87) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:636) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:146) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:128) ~[jurt-4.1.2.jar!/:na] at com.sun.proxy.$Proxy75.loadComponentFromURL(Unknown Source) ~[na:na] at org.jodconverter.local.task.AbstractLocalOfficeTask.loadDocumentFromURL(AbstractLocalOfficeTask.java:240) ~[jodconverter-local-4.4.6.jar!/:4.4.6] at org.jodconverter.local.task.AbstractLocalOfficeTask.loadDocument(AbstractLocalOfficeTask.java:204) ~[jodconverter-local-4.4.6.jar!/:4.4.6] at org.jodconverter.local.task.LocalConversionTask.execute(LocalConversionTask.java:129) ~[jodconverter-local-4.4.6.jar!/:4.4.6] at org.jodconverter.local.office.LocalOfficeManagerPoolEntry.doExecute(LocalOfficeManagerPoolEntry.java:121) [jodconverter-local-4.4.6.jar!/:4.4.6] at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.lambda$execute$0(AbstractOfficeManagerPoolEntry.java:81) [jodconverter-core-4.4.6.jar!/:4.4.6] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_251] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_251] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_251] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_251] Caused by: java.io.IOException: com.sun.star.io.IOException: EOF reached - socket,host=127.0.0.1,port=2001,tcpNoDelay=1,localHost=localhost,localPort=40674,peerHost=localhost,peerPort=2001 at com.sun.star.lib.uno.bridges.java_remote.XConnectionInputStream_Adapter.read(XConnectionInputStream_Adapter.java:55) ~[jurt-4.1.2.jar!/:na] at java.io.DataInputStream.readInt(DataInputStream.java:387) ~[na:1.8.0_251] at com.sun.star.lib.uno.protocols.urp.urp.readBlock(urp.java:355) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.protocols.urp.urp.readMessage(urp.java:92) ~[jurt-4.1.2.jar!/:na] at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge$MessageDispatcher.run(java_remote_bridge.java:105) ~[jurt-4.1.2.jar!/:na] 2025-12-01 09:37:00.384 INFO 43091 --- [er-offprocmng-0] o.j.local.office.OfficeDescriptor : soffice info (from exec path): Product: LibreOffice - Version: ??? - useLongOptionNameGnuStyle: true 2025-12-01 09:37:00.553 INFO 43091 --- [er-offprocmng-0] o.j.local.office.OfficeDescriptor : soffice info (from help output): Product: LibreOffice - Version: 7.5.3.2 - useLongOptionNameGnuStyle: true 2025-12-01 09:37:00.581 INFO 43091 --- [er-offprocmng-0] o.j.l.office.LocalOfficeProcessManager : Starting process with --accept 'socket,host=127.0.0.1,port=2001,tcpNoDelay=1;urp;StarOffice.ServiceManager' and profileDir '/tmp/.jodconverter_socket_host-127.0.0.1_port-2001_tcpNoDelay-1' 2025-12-01 09:37:01.362 WARN 43091 --- [er-offprocmng-0] o.j.l.o.StartProcessAndConnectRetryable : Office process died with exit code 81; restarting it 2025-12-01 09:37:02.905 INFO 43091 --- [er-offprocmng-0] o.j.local.office.OfficeConnection : Connected: 'socket,host=127.0.0.1,port=2001,tcpNoDelay=1' 2025-12-01 09:37:02.905 INFO 43091 --- [er-offprocmng-0] o.j.l.office.LocalOfficeProcessManager : Started process; pid: 49641 curl: (7) Failed connect to 119.45.16.244:8888; Connection timed out为什么会转换超时,如何查
12-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值