JAR无法加载com.microsoft.sqlserver.jdbc.sqlserverdriver

Dav*_*d G 3 java jdbc sql-server-2008 classnotfoundexception

似乎有许多与此相关的类似问题,但没有一个能够为我提供任何帮助.我在SQL Server上运行Microsoft的JDBC驱动程序 (我正在使用)并使用集成身份验证来访问我的数据库.用于连接的代码段如下:sqljdbc4.jar

String connectionUrl="jdbc:sqlserver://servername:1433;integratedSecurity=true;";

try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    con = DriverManager.getConnection(connectionUrl);
}//catch, etc...
Run Code Online (Sandbox Code Playgroud)

当我在Eclipse中运行项目时,它会毫无障碍地启动.当我运行Maven clean install并将其打包到.jar中时,我收到错误:

java.lang.ClassNotFoundException: Failure to load: com.microsoft.sqlserver.jdbc.SQLServerDriver
    at launch.JarClassLoader.loadClass(JarClassLoader.java:964)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at ui.SearchWindow$1.run(SearchWindow.java:97)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我试过在其他线程中发布的解决方案; 我有一个CLASSPATH指向.jar它的System 变量,它位于我的构建路径和我的运行时类路径中.也许这个问题正在盯着我.我最好的猜测是它与Maven有关,但我该如何解决呢?

另外,如果我需要澄清任何要点,请告诉我.我非常乐意这样做.

Mar*_*eel 5

在您的评论中,您确认已手动将其添加到构建路径而不是maven POM.你真的需要添加一个依赖项,否则Maven在构建时不会知道它.

只有一个问题:SQL Server JDBC驱动程序不在Maven Central上,因此您需要将其自己添加到本地存储库(或公司范围的存储库)中.

要添加到本地存储库,请下载驱动程序并执行:

mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver
    -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)

并将依赖项添加到POM:

<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>sqljdbc4</artifactId>
  <version>4.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

也可以看看: