You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Postgres驱动安装异常:ClassNotFoundException求助

解决java.lang.ClassNotFoundException: org.postgresql.Driver的方案

核心原因

直接执行java Main时,JVM的类路径(classpath)未包含PostgreSQL驱动jar包。Maven的install和compile仅完成编译操作,不会自动将依赖加入运行时类路径。

具体解决步骤

方法1:用Maven exec插件运行(最推荐,适合新手)

无需手动处理类路径,直接通过Maven调度运行:

  1. 在项目根目录执行命令:
    mvn exec:java -Dexec.mainClass="com.main.Main"
    
    注意:Java要求类名与文件名严格一致,你的文件src/main/java/com/main/main.java需改名为Main.java,类定义也需对应为public class Main。

方法2:手动指定类路径运行

若坚持使用java命令,需手动将驱动jar包加入类路径:

  1. 找到Maven下载的PostgreSQL驱动jar包,默认路径:
    • Linux/macOS:~/.m2/repository/org/postgresql/postgresql/42.2.23/postgresql-42.2.23.jar
    • Windows:C:\Users\你的用户名\.m2\repository\org\postgresql\postgresql\42.2.23\postgresql-42.2.23.jar
  2. 进入编译后的class文件目录(Maven默认输出目录为target/classes)
  3. 执行运行命令:
    • Windows(用;分隔路径):
      java -cp ".;完整的驱动jar包路径" com.main.Main
      
    • Linux/macOS(用:分隔路径):
      java -cp ".:完整的驱动jar包路径" com.main.Main
      

方法3:打包成可执行jar(适合分发场景)

通过Maven插件将依赖与代码打包成单个可执行jar:

  1. 在pom.xml的build节点下添加插件配置:
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>com.main.Main</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
    
  2. 执行打包命令:
    mvn clean package
    
  3. 在target目录找到形如项目名-版本号-jar-with-dependencies.jar的文件,运行:
    java -jar target/项目名-版本号-jar-with-dependencies.jar
    

额外注意事项

  • 确认pom.xml中的PostgreSQL依赖配置正确:
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.2.23</version>
    </dependency>
    
  • 严格遵循Java命名规范:类名首字母大写,文件名与类名完全一致。

内容的提问来源于stack exchange,提问作者plutownium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:22:52