1

サーブレットを使用して.xls(Excelスプレッドシート)ファイルをサーバーにアップロードしています。ビジネスロジックのアップロード部分にApacheFileUploadAPIを使用しています。この部分が機能していることを確認するために、サーブレット側から.txtファイルをサーブレットにアップロードしようとしました。その後、サーブレット側からApache FileUpload APIInputStreamのすべての内容を.txtコンソールに出力するためのを提供します。

InputStream動作しない部分は、それを使用して、ユーザーがアップロードしたファイルをスキャン.xlsしてコンソールに印刷する方法に転送しようとしたときです。スローされる例外は次のとおりです。

java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.WorkbookFactory

これは、Javaプロジェクトビルドパスにpoi-3.5-FINAL-20090928.jarとの両方を追加したにもかかわらず発生します。poi-ooxml-3.5-FINAL-20090928.jar後者のファイルにはWorkbookFactoryクラスが含まれていることに注意してください。

それでも、ハードドライブにローカルに存在する.xlsファイルをスキャンしてみたところ、そこから派生して、InputStreamのすべてのセルを印刷するために転送すると.xls、コンソールの各行と列のセルが問題なく印刷されます。解決策はありますか?

4

2 に答える 2

2

Apache Commons FileUploadを使用しているため、Webアプリケーションを使用していることを意味します。/WEB-INF/libサードパーティのライブラリで通常行うように、ライブラリをWebアプリケーションのフォルダに配置しましたか?Java ProjectBuildPathでは何もする必要はありません。Eclipseは自動的に/WEB-INF/libビルドパス内のライブラリを取得し、Webアプリケーションは、デプロイされると、デフォルトでそれらのライブラリをクラスパス内に取得します。

それでも問題が解決しない場合は、クラスパスに古いバージョンのPOIがないことを確認してください。これにより、クラスロードでコイルライドが発生する可能性があります。これには、/WEB-INF/lib各アプリサーバーの下にあるWebアプリ/lib(および、メーカー/バージョン/構成によっては他のWebアプリもあります。詳細については、ドキュメントを参照してください)とJREが含まれ/libます。古いPOIバージョンがそこにある場合は、最初にそれらを削除する必要があります。実際、これらのフォルダーにはサードパーティのWebアプリ固有のライブラリを含めるべきではなく、クラスパスが乱雑になるだけです。

于 2009-11-25T02:11:04.687 に答える
0

これに対する解決策は非常に簡単です:

  1. このリンクにあるすべてのjarファイルをダウンロードしますhttp://archive.apache.org/dist/poi/release/bin/poi-bin-3.9-20121203.zip
  2. ファイルを抽出し、すべてのjarファイルをプロジェクトの「\ WebContent \ WEB-INF \lib\」にコピーします。注意:ECLIPSEでプロジェクトにコピーして貼り付ける必要があります。Windowsエクスプローラーからコピーして貼り付けたり、Javaビルドパスに外部JARとして配置したりしないでください。機能しません。

これで完了です。:Dこれで問題が解決するかどうかをお知らせください。

于 2013-08-06T18:25:31.793 に答える