0

XSSFWorkbook を作成するプロジェクト/コードの実行中に、org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFileRecoveryPr のクラス定義が見つからないというエラーでシステムが失敗する

すべての poi 3.9 jar とその前提条件の jar も持っています。

興味深いことに、同じプロジェクト/コードが友人のシステムで正常に動作しています。

このプロジェクトは、RAD 上に構築された JSF 1.2 プロジェクトです。

システムの MS Office インストール スイートに関連している可能性はありますか? また、ワークブックの作成時にクラスが呼び出されるのはなぜですか。どこにもドキュメントが見つかりませんでした。

プロジェクトのテストを進めることができないため、問題の解決にご協力ください。

4

1 に答える 1

0

「私はpoi-ooxml-schemas jarを使用していますが、私のコードは「java.lang.NoClassDefFoundError: org/openxmlformats/schemas/ somethingで失敗しています」のApache POI FAQエントリから:

新しい OOXML ファイル形式を使用するには、POI は、XMLBeans によってコンパイルされたファイル形式 XSD を含む jar を必要とします。これらの XSD は、Java クラスにコンパイルされると、org.openxmlformats.schemas 名前空間に存在します。

コンポーネントの概要セクションで説明されているように、2 つの jar ファイルが利用可能です。すべてのスキーマの完全な jar は ooxml-schemas-1.1.jar で、現在は約 15 MB です。小さい方の poi-ooxml-schemas jar は、わずか約 4 MB です。ただし、後者のjarファイルには、通常使用される部分のみが含まれています。

多くのユーザーは、容量を節約するために小さい poi-ooxml-schemas jar を使用することを選択します。ただし、poi-ooxml-schemas jar には、単体テストで識別されるように、通常使用される XSD とクラスのみが含まれています。場合によっては、最小限の poi-ooxml-schemas jar に含まれていないファイル形式の一部を使用しようとすることがあります。この場合、完全な ooxml-schemas-1.1.jar に切り替える必要があります。長期的には、将来の poi-ooxml-schemas jar にそれらが含まれるように、XSD の余分な部分を使用する新しい単体テストを送信することもできます。

したがって、短期的には、poi-ooxml-schemasjar からより大きな (そして完全な) ooxml-schemasjar に切り替えるだけで済みます。長期的には、目的の CT クラスを使用する Apache POI プロジェクトに junit テストを送信する必要があります。そのクラスはpoi-ooxml-schemas、将来のリリースで小さい jar に自動的に含まれます。

于 2014-04-02T22:53:58.940 に答える