Проблемы встраивания существующих-db - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь использовать существующий-db в своем приложении, поэтому чтобы проверить его встраивание, я следовал руководству, указанному на веб-странице eXist-db http://www.exist -db.org / exist / apps / doc / deploy .xml . Для самого кода:

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();
    }
}

Сам код можно найти внизу предоставленной мною веб-страницы. Это закончилось тем, что мы застряли при выполнении DatabaseManager.getCollection("xmldb:exist:///db", "admin", "") со следующим выводом https://pastebin.com/b6Tf7K1L.

Я выбрал следующие параметры виртуальной машины: -Djava.endorsed.dirs=lib/endorsed -Dexist.initdb=true -Dexist.home=. (с использованием IntelliJ IDEA и Java 8 в 2017.2.7).

Это первый раз, когда я работаю с базами данных exist-db и xml в целом и не могу найти решение. Я следовал части руководства «Встраивание eXist в приложение» в приведенной выше ссылке.

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Итак, из вашего вывода вам не хватает некоторых файлов jar из вашего classpath. Лучший способ избежать подобных вещей - использовать Maven в качестве системы сборки и использовать артефакты Maven, опубликованные по адресу github.com/exist-db/mvn-repo

.

Возможно, вы захотите начать с зависимости от существующего ядра и, возможно, существующего тест-набора, если хотите использовать более удобный класс ExistEmbeddedServer.

Прошу прощения за отсутствие деталей, у меня только один телефон, который у меня был в эти последние несколько дней.

p.s. Вы также можете найти примеры кода использования Maven для своих собственных проектов eXist-db из книги eXist здесь - https://github.com/exist-book/book-code. Они предназначены для eXist 2.1, как книга была опубликована тогда. Я также обновил код для eXist-db 4.0.0 здесь - https://github.com/eXist-book/book-code/tree/eXist-4.0.0.

0 голосов
/ 02 мая 2018

Ошибка довольно очевидна:

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

Вышеуказанная ошибка означает, что класс отсутствует в вашем пути к классам. Скорее всего, вы забыли добавить lucene-queryparser-4.9.0.jar

0 голосов
/ 27 апреля 2018

Есть две открытые проблемы, касающиеся упомянутой вами документации. Первый может помочь отсутствует информация второй дает вам общие сведения об общих проблемах со статьей больше проблем

Из того, что я вижу в вашем журнале, вам, возможно, придется переименовать log4j.xml в log4j2.xml. Ошибки, связанные с lucene и log4j, позволяют предположить, что может быть проблема с возможностью записи указанного местоположения.

Пожалуйста, не стесняйтесь добавлять комментарии и к проблемам Github.

...