我有一个连接到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中的驱动程序不在类路径上? (或者还有其他可能导致问题的原因吗?)
答案 0 :(得分:0)
MadProgrammer上面的评论是问题:我没有注册驱动程序,因为我还没有意识到它是JDBC 3.0驱动程序,而不是JDBC 4.0。