Adegan muncul kembali
Apache Poi
Linux
Kucing jantan
Seperti yang ditunjukkan di atas, dalam lingkungan Linux+Tomcat, kesalahan "tidak ada file atau direktori seperti itu" yang akan dilaporkan saat menggunakan Apache POI untuk mengekspor Excel.
pesan kesalahan
java.lang.runtimeException: java.io.ioException: Tidak ada file atau direktori seperti itu di org.apache.poi.xssf.streaming.sxssfworkbook.createandregistersxsfsheet (sxssfworkbook.java:569) di org.apache.poi.xssf.streaming.sxssfworkbook.createSheet (sxssfworkbook.java:558) di com.app.util.excelioutil.write (excelioutil.java:46) di com.app.trollers.drivingschoolcrollrollerrollerrolrollerlerrollolrollerrollolrollerrolrollerroller.46) at di sun.reflect.nativeMethodaccessorImpl.invoke0 (metode asli) di sun.reflect.nativeMethodaccessorimpl.invoke (nativeMethoDacCessorImpl.java:39) di sun.reflect.delegatingmethodaCessorMl.invoke (delegatingmethlect.joVethoThoDacCessor java.lang.reflect.method.invoke (method.java:597) di com.mvc.invoke.actioninvoker.invoke (actioninvoker.java:75) di com.mvc.mvcdispatcher.service (mvcdispatcher.java:1199) com.mvc.mvcfilter.dofilter (mvcfilter.java:67) di org.apache.catalina.core.applicationfilterchain.internaldofilter (applicationfilterchain.java:243) org.apache.catalina.core.applicationfilterchain.dofilter (applicationfilterchain.java:210) di org.apache.catalina.core.standardwrappervalve.invoke (standarwrappervalve.java:22) di org.apache.catalina.core.standardcontextValve.invoke (StandardContextValve.java:123) di org.apache.catalina.Authenticator.authenticatorbase.invoke (authenticatorbase.java:502) di org.apache.catalina.core.standardhostvalve.invoke (Standardhostvalve.java:171) di org.apache.catalina.valves.errorreportvalve.invoke (errorreportvalve.java:99) di org.apache.catalina.valves.accesslogvalve.invoke (AccessLogvalve.java:953) di org.apache.catalina.core.standardenginevalve.invoke (standargalevalve.java:118) di org.apache.catalina.connector.coyoteadapter.service (coyoteadapter.java:408) di org.apache.coyote.http11.abstracthttp11processor.process (abstracthtp11processor.java:1023) (abstracthttp11processor org.apache.coyote.abstractprotocol $ abstrakconnectionHandler.process (abstrakprotocol.java:589) di org.apache.tomcat.util.net.aprendpoint $ socketwithoptionsprocessor.run (aprendpoint.java:1810) di java.util.concurrent.threadpoolexecutor $ worker.runtask (threadpoolexecutor.java:886) di java.util.concurrent.threadpoolexecutor $ worker.run (threadpoolexecutor.java:908) di java.threadrread.threadrread.preadraVa:908) di java.threadrread.threadrread
Larutan
Mari kita bicara tentang solusinya terlebih dahulu, karena solusinya sangat sederhana, Anda hanya perlu membuat folder "temp" di direktori root Tomcat.
Penyebab kesalahan
Alasan kesalahan ini adalah bahwa POI mengekspor Excel Excel ke direktori sementara sistem secara default. Pada saat itu, folder temp tidak ada di bawah tomcat Linux, sehingga direktori tidak dapat ditemukan. Bahkan, tidak peduli di lingkungan sistem apa itu, selama direktori root Tomcat tidak memiliki suhu. Lihat saja kode sumber POI di bawah ini dan Anda akan mengerti.
public void write (outputStream stream) melempar ioException {for (sxssfsheet sheet: _xfromsxhash.values ()) {sheet.flushrows (); } // simpan ke file direktori sementara tmplfile = file.createTempFile ("poi-sxssf-template", ".xlsx"); tmplfile.deleteonexit (); FileOutputStream OS = FileOutputStream baru (TMPLFILE); _wb.write (OS); os.close (); // Ganti entri templat dengan file data lembar yang dihasilkan injectData (tmplfile, stream); tmplfile.delete (); } Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.