База данных H2 подключается в IDE, но не с консоли или в виде файла JAR [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 База данных H2 подключается в IDE, но не с консоли или в виде файла JAR [дубликат]

Сообщение Anonymous »

Я пытаюсь создать проект Maven, который подключается к базе данных H2. В IDE это работает нормально, но при выполнении скомпилированного проекта в терминале или при построении проекта в файл JAR и его выполнении я получаю следующую ошибку:

Код: Выделить всё

No suitable driver found for jdbc:h2:./diary;INIT=RUNSCRIPT FROM 'classpath:diaries.sql';
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:638)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:222)
at edu.ntnu.idi.idat.TestCode.main(TestCode.java:18)
Вот команда, которую я использовал для запуска jar-файла проекта:

Код: Выделить всё

java -jar target/project-1.0-SNAPSHOT.jar
Вот команда, которую я использовал для прямого запуска проекта:

Код: Выделить всё

java -cp target/classes/ edu.ntnu.idi.idat.TestCode
Что значит не найти подходящих драйверов и как я могу обеспечить успешное подключение к базе данных?
Я пробовал переместить файл JAR по папке моего проекта, из целевой папки в корень папки проекта и даже в папку, где у меня есть файл TestCode.java.
В сообщении с аналогичной ошибкой упоминаются загрузчики классов. Я не уверен, что это такое, и я ничего с этим не делал, поэтому не думаю, что это имеет отношение к моей проблеме, хотя могу ошибаться.
Код:

Код: Выделить всё

package edu.ntnu.idi.idat;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public final class TestCode {
private TestCode() { }
/**
* Test code.
* @param args
*/
public static void main(
final String[] args
) {
try {
Connection connection = DriverManager.getConnection(
"jdbc:h2:./diary;INIT=RUNSCRIPT FROM 'classpath:diaries.sql';"
);
System.out.println(
"connection.isValid() = "
+ connection.isValid(0)
);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Вот файл pom.xml по запросу: :

Код: Выделить всё



4.0.0

edu.ntnu
project
1.0-SNAPSHOT

project

http://www.example.com


UTF-8
1.8
1.8





com.h2database
h2
2.4.240



org.springframework
spring-core
7.0.0-M9






org.apache.maven.plugins
maven-jar-plugin
3.5.0



true
edu.ntnu.idi.idat.TestCode









maven-clean-plugin
3.1.0



maven-resources-plugin
3.0.2


maven-compiler-plugin
3.8.0


maven-surefire-plugin
2.22.1


maven-jar-plugin
3.0.2


maven-install-plugin
2.5.2


maven-deploy-plugin
2.8.2



maven-site-plugin
3.7.1


maven-project-info-reports-plugin
3.0.0


org.apache.maven.plugins
maven-compiler-plugin
3.8.1

11
11

--add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED








Код: Выделить всё

diaries.sql
:

Код: Выделить всё

create table if not exists DIARIES (id identity primary key, title varchar (255) not null, author varchar (255) not null, dating TIMESTAMP not null, diarytype varchar (255) not null, public BOOLEAN not null, password varchar(255), contents MEDIUMBLOB (100000) not null);
Возможно, соответствующие части файловой структуры:
Изображение

Изменить:
Я считаю, что это отличается от вопроса о том, как IntelliJ может разрешать зависимости и запускать приложение Spring Boot (maven) а из командной строки это невозможно?, так как я уже использую плагин maven-jar для создания зависимостей в моем файле jar.

Подробнее здесь: https://stackoverflow.com/questions/798 ... a-jar-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»