Java 未找到数据库驱动程序,即使它在 jar 文件中

Java database driver not found, even though it's in the jar file

我有一个连接到 SQLServer 数据库的 Java 应用程序,它打算在命令行 运行。在 Maven 依赖项中,我添加了以下内容:

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>

当我通过 Intellij 运行 程序时,我能够 运行 它没有任何问题。当我打开创建的 jar 文件并破解它时,我可以看到 JTDS 驱动程序:

但是,当我尝试使用与我在 Intellij 运行 配置中使用的完全相同的参数在命令行中 运行 jar 时,出现错误:

Caused by: java.sql.SQLException: No suitable driver found for jdbc:jtds:sqlserver://databaseserver:1433/database 

我运行的命令是

java -jar jarname.jar -cfg ../config.xml

这似乎与这个特定的驱动程序无关,因为如果我连接到 Oracle 数据库并包含 Oracle 瘦驱动程序依赖项,我也会遇到同样的问题。 (但是,为了让事情变得有趣,如果我添加一个 Postgres 驱动程序依赖项,它 运行 在连接到 Postgres 数据库的命令行上就可以了。)

如果我手动将驱动程序 jar(与 maven 依赖项的版本相同)添加到类路径,该 jar 会正常 运行。

什么可能导致 jar 中的驱动程序不在类路径中? (或者是否有其他原因可能导致此问题?)

上面 MadProgrammer 的评论是问题所在:我没有注册驱动程序,因为我没有意识到它是 JDBC 3.0 驱动程序,而不是 JDBC 4.0。