Reputation: 211
I face a problem about connecting to H2
this is my pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>.</groupId>
<artifactId>dbConnection</artifactId>
<name>Db Connection</name>
<packaging>war</packaging>
<version>0.1</version>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
</dependency>
</dependencies>
</project>
and this is my main code
import java.sql.*;
public class DbConnection
{
static final String DB_URL = "jdbc:h2:tcp://localhost/~/test;AUTO_SERVER=TRUE";
public static void main(String[] args) throws Exception
{
try
{
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection(DB_URL,"sa","");
conn.close();
}
catch(ClassNotFoundException ex)
{
System.out.println( "ERROR: Class not found: " + ex.getMessage());
}
}
}
is always show up that Class not found:org.h2.Driver
Upvotes: 21
Views: 55463
Reputation: 149
If anyone doesn't want to use h2 aside from testing, keeping the <scope>test</scope>
, just remove it for a moment, let IDE understand your line, and then put the scope back in.
If that doesn't help try restarting IDE.
Worked in IntelliJ IDEA.
Upvotes: 1
Reputation: 546
I have read all the answers available and tried all of them. I am not sure which one worked but yes, It worked at last. So, try one of these or all but it will solve your problem.
<scope>test</scope>
or
<scope>runtime</scope>
<version>1.4.190</version>
you can also try these
<version>1.4.192</version>
<version>1.4.195</version>
<version>1.4.197</version>
Finally, my dependency looks like the below code.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.190</version>
</dependency>
Upvotes: 3
Reputation: 4086
My problem was in "" in docker-compose.yaml environment variables:
SPRING_DATASOURCE_DRIVER-CLASS-NAME="org.h2.Driver"
- it does not work
SPRING_DATASOURCE_DRIVER-CLASS-NAME=org.h2.Driver
- it work
Upvotes: 0
Reputation: 1039
Found the answer here remove the runtime scope
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
#removed this -> <scope>test</scope> #
</dependency>
Upvotes: 7
Reputation: 11091
I had the same problem with IntelliJ, it could not found org.h2.Driver
. I tried several solutions from web but after simple restart of IntelliJ the problem was solved.
Hope this helps to save some time.
Upvotes: 29
Reputation: 854
You should set scope to runtime so that h2 driver is packaged in your war file:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.190</version>
<scope>runtime</scope>
</dependency>
Upvotes: 36