Nano Hash - криптовалюты, майнинг, программирование

Не удается подключиться к БД с помощью JPA - отсутствует класс встроенного драйвера derby

Я пытаюсь создать локальную базу данных дерби, используя jpa. В качестве реализации JPA я использую openjpa и дерби реализации sql.

Это постоянство.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence
public static void main(String[] args)
{
    Persistence.generateSchema("DataLayer", null);
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("DataLayer");
    EntityManager manager = factory.createEntityManager(); // <- Exception here
}
2.xsd"> <persistence-unit name="DataLayer" transaction-type="RESOURCE_LOCAL"> <non-jta-data-source>DataSource</non-jta-data-source> <properties> <property name="javax.persistence.schema-generation.database.action" value="create" /> <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> <property name="javax.persistence.jdbc.url" value="jdbc:derby:testdb" /> </properties> </persistence-unit> </persistence>

Это мой основной:

public static void main(String[] args)
{
    Persistence.generateSchema("DataLayer", null);
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("DataLayer");
    EntityManager manager = factory.createEntityManager(); // <- Exception here
}

Это начальная часть исключения, которую я получаю:

Exception in thread "main" <openjpa-3.1.2-r66d2a72 nonfatal general error> org.a
pache.openjpa.persistence.PersistenceException: There were errors initializing y
our configuration: <openjpa-3.1.2-r66d2a72 fatal user error> org.apache.openjpa.
util.UserException: A connection could not be obtained for driver class "org.apa
che.derby.jdbc.EmbeddedDriver" and URL "jdbc:derby:testdb".  You may have spe
cified an invalid URL.
...

говоря, что я, возможно, указал неверный URL.

Полная трассировка стека: https://justpaste.it/3kmgo

Корневое исключение: java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver

Я указал EmbeddedDriver в файле persistence.xml, а также включил зависимость от Maven.

Также я думаю, что мой URL-адрес подключения и драйвер верны в соответствии с документами о дерби:

Включены зависимости (с использованием Maven):

<dependency>
    <groupId>org.apache.openjpa</groupId>
    <artifactId>openjpa</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derby</artifactId>
    <version>10.15.2.0</version>
</dependency>

Я попытался изменить свойство javax.persistence.jdbc.url на jdbc:derby:testdb;create=true, но такое же исключение. Также попытался установить для свойства javax.persistence.schema-generation.database.action значение none.


  • Обратите внимание, что вы используете Derby 10.15, но ваш вопрос указывает на то, что вы читаете документы из Derby версии 10.4 и 10.8, которые довольно старые. В опубликованном вами сообщении об ошибке говорится EmbeddeasddDriver -- что это за значение и как оно туда попало? Это подсказка? 24.02.2021
  • @BryanPendleton О боже ... извините, я отредактировал вопрос. Я написал это asd там, наверное, по ошибке. И я проверил эти документы 10.15, заменил их в вопросе, но этот материал для подключения остался прежним. 24.02.2021
  • Хорошо, имеет смысл. Попробуйте получить полную трассировку задачи вашего исключения. Я не очень хорошо знаком с тем, что делает Maven, но я подозреваю, что у вас нет правильных банок в вашем CLASSPATH. В частности, вам, вероятно, не хватает файла derbyshared.jar. Прочтите примечание к выпуску DERBY-6945 здесь: db.apache.org/derby /релизы/релиз-10.15.1.3.html 24.02.2021
  • @BryanPendleton Я включил полную трассировку стека моего исключения в вопрос. Корневое исключение заключается в том, что класс EmbeddedDriver отсутствует, так как вы подозревали, что у меня нет правильных банок в моем classapth. Изменено название вопроса. Однако я указал этот класс в файле persistence.xml и включил зависимость от Maven:/ 02.03.2021
  • Я думаю, что ваш артефакт неверен. Я думаю, что «derbyclient» предназначен для сетевой конфигурации Derby «клиент-сервер». Поскольку вы используете встроенную конфигурацию derby, попробуйте вместо этого указать «derby» в качестве артефакта. 02.03.2021
  • @BryanPendleton Пробовал, сэр. То же исключение. Также пробовал удалять из проектов все module-info.java, тоже не помогло. 02.03.2021

Ответы:


1

Выяснил, что класс org.apache.derby.jdbc.EmbeddedDriver не находится в зависимости от derby artifactid (у него есть jar-файлы derby и derbyshared). Он есть в derbytools, поэтому включение derbytools в зависимости решает проблему отсутствия класса EmbeddedDriver:

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbytools</artifactId>
    <version>10.15.2.0</version>
</dependency>
02.03.2021
  • Рад, что ты это понял! 03.03.2021

  • 2

    При использовании Debry 10.15.2.0 встроенный драйвер находится в Derbytools.jar. Таким образом, должно быть в ваших библиотеках и пути к классам. Создал новый драйвер (я удалил все драйверы, которые говорят что-нибудь встроенное). На вкладке «Службы» щелкните правой кнопкой мыши «Драйверы» и «Создать новый». Добавьте Derbytools.jar Выделите его и нажмите кнопку «Найти». Дайте ему осмысленное имя, и он будет работать, как и ожидалось. На всякий случай я также добавил Derby.jar и DerbyShared.jar, чтобы избежать проблем.

    03.03.2021
  • ОП использует maven для управления зависимостями; вы, кажется, описываете, как добавить зависимости в какой-то IDE, что не имеет отношения к вопросу. Суть вашего решения (добавление derbytools) верна, но Wortig уже понял это. 03.03.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..