Я пытаюсь использовать H2 для подключения к базе данных на Java (используя Eclipse в качестве IDE). Образец (ниже) выбрасывает ClassNotFoundException
. Дело в том, что я сделал добавление файла j2 har в систему CLASSPATH. Я даже несколько раз проверил его там через printenv
в консоли. Я пропускаю шаг?
КОД:
import java.sql.*;
public class Program {
/**
* @param args
*/
public static void main(String[] args)
throws Exception{
try{
System.out.println("hello, world!");
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:~/testdb", "sa", "");
// add application code here
conn.close();
}catch(ClassNotFoundException ex){
System.out.println( "ERROR: Class not found: " + ex.getMessage() );
}
System.exit(0);
}
}
Недавно я столкнулся с исключением java.lang.ClassNotFoundException: org.h2.Driver
в IntelliJ IDEA 2017.2 EAP при использовании последней версии (1.4.196) драйвера H2 . Решение было снизить до 1.4.195, который работал.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.195</version>
<scope>test</scope>
</dependency>
У меня была следующая ошибка (с использованием Intellij)
java ClassNotFoundException для org.h2.Driver
Решил эту проблему, удалив область из моего pom.
было:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>test</scope>
</dependency>
изменено на:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
</dependency>
Этот тип ошибки возникнет, когда мы реализуем проект Maven Quickstart как зависимость от другого проекта. В основном встречается как тест только на джунит. Так что в приложении это не сработает.
Используйте версию релиза.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
В моем случае это проблема строки подключения. Я видел это .
После того, как я добавил mem
в строку URL ниже, и это сработало.
String url = "jdbc:h2:mem:~/test";
Использование <scope>test</scope>
не должно работать логически. попробуйте это с помощью <scope>runtime</scope>
или <scope>provided</scope>
, если только вам это не нужно для фазы тестирования.
В maven docs говорится, что <scope>test</scope>
зависимость не требуется для нормального использования приложения и доступна только для фаз компиляции и выполнения теста
https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
StrictMode.setThreadPolicy
можно считать это: android-er.blogspot.com/2012/04/…
– Nolesh
12.10.2012, 04:34