Java 尝试嵌入exist db时出现问题

Java 尝试嵌入exist db时出现问题,java,intellij-idea,exist-db,Java,Intellij Idea,Exist Db,我试图在我的应用程序中使用existdb,所以为了测试嵌入它,我遵循了existdb webppage上指定的指南。 对于相关代码本身: import org.xmldb.api.DatabaseManager; import org.xmldb.api.base.Collection; import org.xmldb.api.base.Database; import org.exist.xmldb.DatabaseInstanceManager; public class TestDB {

我试图在我的应用程序中使用existdb,所以为了测试嵌入它,我遵循了existdb webppage上指定的指南。 对于相关代码本身:

import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.Database;
import org.exist.xmldb.DatabaseInstanceManager;
public class TestDB {       
    public static void main(String args[]) throws Exception {
        // initialize driver
        Class cl = Class.forName("org.exist.xmldb.DatabaseImpl");
        Database database = (Database)cl.newInstance();
        database.setProperty("create-database", "true");
        DatabaseManager.registerDatabase(database);

        // try to read collection
        Collection col = 
            DatabaseManager.getCollection("xmldb:exist:///db", "admin", "");
        String resources[] = col.listResources();
        System.out.println("Resources:");
        for (int i = 0; i < resources.length; i++) {
            System.out.println(resources[i]);
        }

        // shut down the database
        DatabaseInstanceManager manager = (DatabaseInstanceManager) 
            col.getService("DatabaseInstanceManager", "1.0"); 
        manager.shutdown();
    }
}
import org.xmldb.api.DatabaseManager;
导入org.xmldb.api.base.Collection;
导入org.xmldb.api.base.Database;
导入org.exist.xmldb.DatabaseInstanceManager;
公共类TestDB{
公共静态void main(字符串args[])引发异常{
//初始化驱动程序
Class cl=Class.forName(“org.exist.xmldb.DatabaseImpl”);
数据库=(数据库)cl.newInstance();
setProperty(“创建数据库”、“true”);
DatabaseManager.registerDatabase(数据库);
//试着读一读这本书
集合列=
DatabaseManager.getCollection(“xmldb:exist:///db“,”管理“,”);
字符串资源[]=列listResources();
System.out.println(“资源:”);
for(int i=0;i
代码本身可以在我提供的webppage的底部找到。 最后,在执行
DatabaseManager.getCollection(“xmldb:exist:///db“,”admin“,”)
,具有以下输出

我选择的VM选项是
-Djava.annocated.dirs=lib/annocated-Dexist.initdb=true-Dexist.home=。
(使用2017.2.7 IntelliJ IDEA和Java 8)


这是我第一次使用existdb和xml数据库,但我还没有找到解决方案。我在上面提供的链接中遵循了指南中的“嵌入存在于应用程序中”部分

关于您提到的文档文章,有两个悬而未决的问题。第一个可能会有所帮助,第二个可能会给你一些关于本文一般问题的背景知识

从我在日志中看到的情况来看,您可能需要将
log4j.xml
重命名为
log4j2.xml
。lucene和log4j相关的错误表明所提供位置的可写性可能存在问题


请随时为Github问题添加更多评论

因此,从您的输出来看,您的类路径中缺少了一些jar文件。避免这种情况的最好方法可能是使用Maven作为构建系统,并使用我们在github.com/exist-db/mvn-repo上发布的Maven工件

如果您想使用更方便的ExistEmbeddedServer类,您可能需要从对ExistCore和ExistTestKit的依赖开始

很抱歉没有提供详细信息,我这几天只带了手机


p、 您还可以在这里的eXist书籍中找到将Maven用于您自己的eXist db项目的代码示例-。它们适用于当时出版的eXist 2.1。我还在这里更新了eXist db 4.0.0的代码-。

错误非常明显:

java.lang.NoClassDefFoundError:org/apache/lucene/queryparser/classic/ParseException


上面的错误表明该类不在类路径中。很可能是您忘记添加
lucene-queryparser-4.9.0.jar

文件名为
log4j2.xml
。至于可写性,目录中的所有内容都具有完全访问权限。还有,是否有与eXist合作的工作指南?