0

一部の XPages アプリケーションでは、Domino の一部としてインストールされている org.apache.commons.lang パッケージを利用しようとしています。必要なセクションの plugin.xml に追加しています。

これにより、パッケージを使用できるようになり、コードがコンパイルされて正常に実行されます。デザインをテスト データベースに更新できます。デザインの更新プロセスでは plugin.xml が更新されないため、インポート ステートメントを再度追加する必要がありますが、これは私の開発サーバー (8.5.2 FP3 で動作し、8.5 で動作しました) .2 FP1 も)。

しかし、別のサーバーで同じコードを実行しようとすると、org.apache.commons.lang の ClassDefNotFoundError で失敗します。これは、多くの異なる Domino バージョンと複数のデータベースで失敗しました。データベースをクリーンアップして再構築すると、コードは正常にコンパイルされますが、実行時にエラーがスローされます。

私の開発サーバーのインストールは 2 つのドライブに分割されていますが、インポートを plugin.xml に追加するとファイルパスが舞台裏のどこかに保存されるとは思いません。

また、jar をデータベースにインポートして、参照ライブラリとしてビルド パスに追加しようとしましたが、再び ClassDefNotFoundError が発生しました。

原因または解決策のアイデアは、ありがたく受け入れられます。

4

2 に答える 2

1

理想とはほど遠いですが、WebContent\WEB-INF の下に lib というフォルダーを作成し、そこに jar ファイルをインポートしました。このパスの lib フォルダーはビルド パスに自動的に含まれるため、そのフォルダー内のすべてのものが自動的に使用可能になります。他の人と話した後、これは別の ClassLoader によってロードされる可能性があるため、サーバーのバージョンと競合しません。理想的ではありませんが、この問題やその他の Apache ライブラリの問題に対するより良い解決策に取り組んでいる人を何人か知っています。より良い解決策が利用可能になったら、コメントを追加します。

于 2012-06-16T17:24:39.787 に答える
0

私が推奨するのは、必要な依存関係を指定する空の XSP ライブラリを作成し、それをグローバル ライブラリに設定することです (つまり、各アプリケーションの依存関係として明示的に設定する必要はありません)。これは明らかにやり過ぎですが、ほぼ確実に機能します。

于 2012-02-21T18:59:08.717 に答える