KarafでバンドルとしてデプロイされているApache POIを使用してExcelを読み込もうとしています。順序どおりjava.lang.NoClassDefFoundError:org/apache/poi/POIXMLDocument
中古POIバージョン:
- POI-3.11.jar
- POI-OOXML-3.11.jar
- POI-OOXML-スキーマ-3.11.jar
feature.xmlスニペット(Karafのバンドルをラップする場合):
<bundle>wrap:mvn:org.apache.poi/poi/3.11</bundle>
<bundle>wrap:mvn:org.apache.poi/poi-ooxml/3.11</bundle>
<bundle>wrap:mvn:org.apache.poi/poi-ooxml-schemas/3.11</bundle>
のpom.xml(依存瓶)Karaf
にプロジェクト内の依存関係だけでなく、バンドルとして使用瓶の上
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11<version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11<version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.11</version>
</dependency>
。
試したservicemix
POIのバージョン。しかし、それは助けにもならない。
私はNoClassDefFoundError
がランタイムエラーであることを理解しています。これは、実行時にクラスが見つからないために発生します。この問題の解決方法を教えてください。
スタックトレース:
java.lang.NoClassDefFoundError: org/apache/poi/POIXMLDocument
at java.lang.ClassLoader.defineClass1(Native Method)[:1.8.0_25]
at java.lang.ClassLoader.defineClass(Unknown Source)[:1.8.0_25]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2128)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1432)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
at java.lang.ClassLoader.loadClass(Unknown Source)[:1.8.0_25]
at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1317)
at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1481)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1427)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
at java.lang.ClassLoader.loadClass(Unknown Source)[:1.8.0_25]
おそらくクラスパスに同じクラスの複数のバージョンがあるようです。 – muasif80
なぜApache POIの古いバージョンを使用していますか?最新のApache Servicemix POIバンドルを手に入れたらどうなりますか? – Gagravarr