尝试使用来自 servlet 的 jackrabbit-standalone-2.4.2.jar 访问存储库时,出现上述错误。我没有使用jackrabbit war,因为我已经有一个胖客户端应用程序在运行,并且我想尽可能多地重用代码。我只是假设这样做是可能的。
为了测试,我创建了一个小型 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 表单发布到这个 servlet 时,异常有两个部分:
java.lang.NoClassDefFoundError: javax/jcr/Repository
java.lang.ClassNotFoundException: javax.jcr.Repository
当我在其中添加 jcr-2.0.jar 时,我得到一个不同的错误:
java.lang.NoClassDefFoundError: org/apache/jackrabbit/core/TransientRepository