找不到Java数据库驱动程序,即使它位于jar文件中

时间:2015-01-22 01:28:27

标签: java sql-server maven intellij-idea jar

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

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

当我通过Intellij运行程序时,我能够毫无问题地运行它。当我获取创建的jar文件并将其打开时,我可以看到JTDS驱动程序:

jar file expanded

但是,当我尝试使用与我在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中的驱动程序不在类路径上? (或者还有其他可能导致问题的原因吗?)

1 个答案:

答案 0 :(得分:0)

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