2012-03-08 22 views
0

私はリポジトリ.m2にpoi 3.0.2を追加し、HSSFCell、HSSFSheet、HSSFWorkbook、HSSFRowをインポートしようとしました。エラーなしでコンパイルしています。アプリケーションを実行しようとすると、エラーが表示されます。poi Spring FrameworkでHSSFCell例外が見つかりません

私は

<dependency> 
     <groupId>org.apache</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.0.2</version> 
     <scope>provided</scope> 
    </dependency> 

としてコアフォルダののpom.xmlに依存関係を追加しました。しかし、それだけでHSSFCellがimporting.Iがその特定のクラスをインポートせずにしようとした問題があり、他の人は絶対にfine.I開かれているようですjarとHSSFCellは実際にはjarファイル内に存在します。エラーは次のようなものです。そして、それはSingletonsを破壊します。

java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCell 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2365) 
at java.lang.Class.getDeclaredMethods(Class.java:1763) 
at java.beans.Introspector$1.run(Introspector.java:1265) 
at java.security.AccessController.doPrivileged(Native Method)............ 

可能な解決策は何ですか?

+0

のApache POI 3.0.2日付2008年2月から、ので、いずれかの方法で働いています!なぜ最近のバージョンを使用していないのですか? – Gagravarr

答えて

1

'提供された'スコープを削除します。これにより、デフォルト(コンパイル)スコープが使用されます。

提供されているとは、実行時にjarファイルが提供されるためです。コンパイルスコープを使用する場合、実行時にクラスパス上でjarを使用できるようにする必要があります。

0

別の解決策が見つかりました。指定されたスコープを与えた場合、クラスパスをjBossのrun.batに追加し、そのクラスをjBossのlibフォルダに追加することができます。

それは4年以上古いです

+0

これは動作しますが、本当に良い解決策ではありません。これがあなたを噛んでしまう状況は1)poiライブラリをアップグレードする場合は、JBossとmavenファイルの両方で行う必要がありますが、これはおそらく忘れてしまうでしょう。あなたが忘れてしまった場合は、クラス解決の問題を追跡するのが難しくなります。2)サーバー上で他のアプリケーションを実行すると、クラスパスにこのjarファイルが存在することになります。 MavenにJBossよりもアプリケーションのクラスを処理させることで、問題が少なくなります。 –

関連する問題