Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
找不到Java数据库驱动程序,即使它是';它在jar文件中_Java_Sql Server_Maven_Intellij Idea_Jar - Fatal编程技术网

找不到Java数据库驱动程序,即使它是';它在jar文件中

找不到Java数据库驱动程序,即使它是';它在jar文件中,java,sql-server,maven,intellij-idea,jar,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> 我运行的命令

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

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>
我运行的命令是

java -jar jarname.jar -cfg ../config.xml
这似乎与这个特定的驱动程序无关,因为如果我连接到Oracle数据库并包含Oracle精简驱动程序依赖项,我会遇到同样的问题。(不过,为了让事情变得有趣,如果我添加一个Postgres驱动程序依赖项,它在连接到Postgres数据库的命令行上运行得很好。)

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


是什么导致jar中的驱动程序不在类路径上?(或者是其他什么原因导致了这个问题?

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

你注册了驱动程序吗?@MadProgrammer你不需要再注册了(至少如果你的驱动程序是JDBC 3.0或更高版本的话)。自从v4在2007年发布以来,我希望这是一个安全的假设。@ElliottFrisch还有其他想法吗?因为他们试过三个驱动程序,只有一个有效,我猜不是…@你是对的。依我看,OP应该升级到最新的sql server驱动程序;据说(部分)jTDS是一个开源的100%纯Java(类型4)JDBC3.0,所以是pre-4。0@MadProgrammer你说得对!我没有注册它-我不认为我需要注册,因为我认为它是一个JDBC4.0驱动程序,但是你的问题让我仔细检查了一下,事实上JTDS驱动程序是JDBC版本3.0,它不只是通过在类路径上自动注册驱动程序。这也解释了为什么它适用于Postgres(JDBC4.0),但不适用于JTDS驱动程序。这为我解决了这个问题!我希望我能把你的评论标记为正确。
java -jar jarname.jar -cfg ../config.xml