サーブレットからjackrabbit-standalone-2.4.2.jarを使用してリポジトリにアクセスしようとすると、上記のエラーが発生します。すでにシッククライアントアプリが動作していて、できるだけ多くのコードを再利用したいので、ジャックラビット戦争は使用しませんでした。私はこれが可能だと思っていました。
テストするために、小さなWebアプリケーションを作成しました。zipファイルを添付できないため、以下のdoPost()メソッドをコピーします。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Repository repository = new TransientRepository(
"repository.xml", //embedded within the war
"path/to/home/dir");
Session session = null;
try {
session = repository.login();
System.out.println("root node identifier: " +
session.getRootNode().getIdentifier());
} catch (Exception e) {
e.printStackTrace();
} finally {
session.logout();
}
}
htmlフォームからこのサーブレットに投稿すると、例外は2つの部分になります。
java.lang.NoClassDefFoundError: javax/jcr/Repository
java.lang.ClassNotFoundException: javax.jcr.Repository
jcr-2.0.jarを追加すると、別のエラーが発生します。
java.lang.NoClassDefFoundError: org/apache/jackrabbit/core/TransientRepository