java ClassNotFoundException for org.h2.Driver

2022-09-01 03:33:56

我正在尝试使用H2连接到Java中的数据库(使用Eclipse作为IDE)。该示例(如下所示)会抛出一个 .问题是,我确实将h2 jar文件添加到了系统CLASSPATH中。我甚至通过在控制台中多次检查它。我是否遗漏了一个步骤?ClassNotFoundExceptionprintenv

法典:

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

 }

}

答案 1

在我的情况下(有点不相关,但值得一提),我将其添加到我的maven pom中,错误消息消失了:

  <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>xxx</version> <!-- ex: 1.2.140 -->
  </dependency>

或者,如果您在单元测试期间仅使用 h2:

  <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>xxx</version> <!-- ex: 1.2.140 -->
    <scope>test</scope>
  </dependency>

答案 2

我遇到了以下错误(使用Intellij)

java ClassNotFoundException for 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 快速入门项目作为另一个项目的依赖项实现时,将出现这种类型的错误。通常仅作为 junit 的测试发生。因此,在应用程序中,它将不起作用。


推荐