Сцена вновь появляется
Apache Poi
Linux
Томкат
Как показано выше, в среде Linux+Tomcat об ошибке «Нет такого файла или каталога» будет сообщена при использовании Apache POI для экспорта Excel.
Сообщение об ошибке
java.lang.runtimeexception: java.io.ioexception: нет такого файла или каталога на org.apache.poi.xssf.streaming.sxssfworkbook.createandRegistersxssfsheet (sxsfworkbook.java:569) org.apache.poi.xssf.streaming.sxssfworkbook.createsheet (sxssfworkbook.java:558) на com.app.util.excelioutil.write (Excelioutil.java:46) at com.applollers.drivingschoolcroler.downlorler.dullerlerlerlerler.downlorlerler.dullerlerlerlerler.duller at sun.reflect.nativemethodaccessoriMpl.invoke0 (нативный метод) на sun.reflect.nativemethodaccessorimpl.invoke (nativemethodaccessorimpl.java:39) на sun.reflect.delegatingmethodaccessormpl.invoke (DelegatingMethodaccesspormpl. java.lang.reflect.method.invoke (method.java:597) на com.mvc.invoke.actioninvoker.invoke (actioninvoker.java:75) по адресу com.mvc.mvcdispatcher.service (mvcdispatcher.java:119) у com.mvc.mvcfilter.dofilter (mvcfilter.java:67) на org.apache.catalina.core.applicationfilterchain.internaldofilter (ApplicationFilterChain.java:243) org.apache.catalina.core.applicationfilterchain.dofilter (ApplicationFilterChain.java:210) на org.apache.catalina.core.standardwrappervalve.invoke (Standardwrappervalve.java:222) org.apache.catalina.core.standardcontextvalve.invoke (StandardContextValve.java:123) на org.apache.catalina. org.apache.catalina.core.standardhostvalve.invoke (Standardhostvalve.java:171) на org.apache.catalina.valves.errorreportvalve.invoke (erryReportValve.java:99) org.apache.catalina.valves.accesslogvalve.invoke (accesslogvalve.java:953) на org.apache.catalina.core.standardenginevalve.invoke (StandardEngineValve.java:118) org.apache.catalina.connector.coyoteadapter.service (coyoteadapter.java:408) at org.apache.coyote.http11.abstracttp11pocessor.process (Abstracttp11processor.java:1023) в org.apache.coyote.abstractprotocol $ AbstractConnectionHandler.process (AbstractProtocol.java:589) на org.apache.tomcat.util.net.aprendpoint $ socketwithoptionsprocessor.run (aprendpoint.java:1810) у java.util.concurrent.threadpoolexecutor $ worker.runtask (threadpoolexecutor.java:886) по адресу java.util.concurrent.threadpoolexecutor $ corker.run (threatpoolexecutor.java:908) на java.lang.
Решение
Давайте сначала поговорим о решении, потому что решение очень простое, вам нужно только создать «временную» папку в корневом каталоге Tomcat.
Причина ошибки
Причина этой ошибки заключается в том, что POI экспортирует экспортируемый Excel в временный каталог системы по умолчанию. В то время папка Temp не существовала под Tomcat of Linux, поэтому каталог не может быть найден. На самом деле, независимо от того, в какой системной среде она находится, до тех пор, пока в каталоге Tomcat Root нет температуры. Просто посмотрите на исходный код POI ниже, и вы поймете.
public void write (outputstream stream) бросает ioException {for (sxssfsheet sheet: _xfromsxhash.values ()) {sheate.flushrows (); } // Сохранить во временный файл каталогов tmplfile = file.createtempfile ("poi-sxssf-template", ".xlsx"); tmplfile.deleteOnexit (); FileOutputStream OS = new FileOutputStream (tmplfile); _WB.Write (OS); os.close (); // заменить записи шаблона сгенерированными файлами данных листа injectData (tmplfile, stream); tmplfile.delete (); } Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.