Java 尝试嵌入exist db时出现问题
我试图在我的应用程序中使用existdb,所以为了测试嵌入它,我遵循了existdb webppage上指定的指南。 对于相关代码本身: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 {
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合作的工作指南?