似乎与此相关的问题很多,但没有一个能够为我提供任何帮助。我在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...
当我在Eclipse中运行该项目时,它顺利启动。当我运行Maven干净安装并将其打包到.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)
我已尝试将解决方案发布到其他主题中;我有一个指向CLASSPATH
的系统.jar
变量,它位于我的构建路径和运行时类路径中。也许问题出在我的脸上。我最好的猜测是它与Maven有关,但是我应该如何解决呢?
此外,如果需要澄清任何要点,请告诉我;我会很乐意这样做。
在您的评论中,您确认已手动将其添加到构建路径而不是Maven POM。您确实需要添加一个依赖项,否则Maven在构建时不会知道它。
并将依赖项添加到POM:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.1.1.jre8</version>
</dependency>
另请参见: