• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[JAVA]jarファイルへのパスの通し方について)

[JAVA]新バージョンのPOIライブラリを旧バージョンのJSPで参照する方法

このQ&Aのポイント
  • javaのPOIライブラリ(v3.0)をTOMCAT+JSPで利用していたのですが、新バージョン(v3.10)にアップデートしました。しかし、新しいバージョンのJSPではエラーが発生し、旧バージョンのJSPと新バージョンのPOIを組み合わせて利用したい場合、クラスパスの設定がうまくいっていない可能性があります。この記事では、新バージョンのPOIライブラリを旧バージョンのJSPで参照する方法について説明します。
  • まず、新しいバージョンのPOIライブラリのjarファイルをクラスパスに追加する必要があります。また、旧バージョンのJSPのコードの先頭で新しいバージョンのPOIライブラリを参照するようにimport文を追加する必要もあります。さらに、クラスパスの設定に問題がある場合は、カレントディレクトリを参照するように設定することも必要です。
  • 以上の手順を踏むことで、新バージョンのPOIライブラリを旧バージョンのJSPで参照することができます。これにより、新しい機能を利用しながら、旧バージョンのJSPを再利用することが可能となります。

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 私が開発しているシステムでもPOIのバージョン違いを共存させることになり次のような対応をしました。 新しいバージョンPOIのソースをダウンロード。 パッケージ名を【package org.apache.poi310】に変更する。 コンパイルして、poi310.jarという名前でjarファイルを生成する。 /WEB-INF/libに上記のjarを配置する。 Java側(JSP)では import org.apache.poi310.*; にすれば新しいPOIが適用されますし もともとの import org.apache.poi.*; でインポートすれば古いPOIを適用できます。 同時に使いたいならimport宣言ではなくクラスを指定します。 org.apache.poi.hssf.usermodel.HSSFSheet sheet1; org.apache.poi310.hssf.usermodel.HSSFSheet sheet2; sheet1は古いPOIのHSSFSheet sheet2は新しいPOIのHSSFSheetとなります。

chibitaChan
質問者

補足

さっそくのご回答ありがとうございます。 確かにその方法が一番良いですね。 ソース落として確認してみました。 バイナリ版を参考に必要なファイルは次のファイルのようでした。 1.poi-3.10-FINAL-20140208.jar 2.poi-ooxml-3.10-FINAL-20140208.jar 3.poi-ooxml-schemas-3.10-FINAL-20140208.jar ※3はパッケージ名が[org.apache.poi]じゃないのでこのまま。 これに対応するソースは次のとおり。 1.src/java/ 2.src/ooxml/java/ こちらの.javaのパッケージ名をすべて 【package org.apache.poi310】に変更してjar化。 (いつもバイナリ使ってるのではじめてですいません) それにしてもファイル数多いです;; 全ての.javaのパッケージ名を変更するのはタイヘンそう。(ECLIPSEのリファクタリングなら簡単にできるんでしょうか?) このやり方であってます・・・よね?

その他の回答 (2)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 >ご指摘のとおり、ディレクトリ名および.javaのpackage名を修正しましたが、 >そのあとのコンパイルがどうもうまくいきません。 >各階層順番にjavac *.javaでやってみましたが、 >エラーがでて通らないところが多数あります。 >これはコンパイルの順序または、もっと適切なコンパイル方法があるものでしょうか? 素直にEclipse等の開発環境を使うのが正確で手っ取り早いです。 どういったディレクトリに置いて、どこをカレントにしてどのようなコマンドを打って、どんなエラーが出てるかわかりませんので アドバイスとしては、Eclipseを使用してくださいとしか言えません。 ほぼなんの設定もなしに全てのclassファイルが生成されますよ。

chibitaChan
質問者

補足

ご助言ありがとうございました。 提示していただいたやり方が最も良いと思いますが、 Eclipseを使ってリファクタリングしてコンパイル、 jar作成してみましたが、実行すると関連するライブラリが見つからないやら 型が解決できないやらのエラーが多数表示され、 残念ながらうまくいきませんでした。 Eclipse上でエラーが出ているにも関わらず (org.apache.poi310以外のエラーなので、何とかなると思って) jarファイルにしているのが問題なのでしょうか? (Eclipseのコンパイルの時点で なにやらPOI3.10のソース外のファイルをimportしようとしていて 見つからないやら、型が解決できないやらのエラーがでてます。) いまさらですが当方の環境はJDK1.5、Eclipse3.6、POIは3.10です。 なにかアドバイスございましたらご教授くださいませ。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 Eclipseは使っているものだと思いました。 さすがに手動でパッケージ名を変更しようとは思いません。 最低限、テキストエディタ等で置換かけましょう。 (その場合ディレクトリ名もpoi310に変更を忘れずに) 何が必要であるかはjarファイルを解凍すればそれぞれクラスが出てきますので それと同じような構成にしてあれば問題ないと思います。 >全ての.javaのパッケージ名を変更するのはタイヘンそう。(ECLIPSEのリファクタリングなら簡単にできるんでしょうか?) はい。 java.org.apache.poiパッケージを右クリックして選択し、リファクタリング→名前変更で java.org.apache.poi310に変更すれば勝手に変更してくれます。

chibitaChan
質問者

補足

またまた質問すいません。 ご指摘のとおり、ディレクトリ名および.javaのpackage名を修正しましたが、 そのあとのコンパイルがどうもうまくいきません。 各階層順番にjavac *.javaでやってみましたが、 エラーがでて通らないところが多数あります。 これはコンパイルの順序または、もっと適切なコンパイル方法があるものでしょうか? なんどもすいませんがよろしくお願いします。

関連するQ&A