java - 获取错误 java.sql.SQLException : No suitable driver found for jdbc:sqlserver://localhost;databaseName=ABC;integratedSecurity=true on Production

标签 java sql-server

我通过 Eclipse 使用 Java、JSP、Tomcat 创建了一个 Web 应用程序。

  1. 在我的 Windows 开发环境上运行应用程序时,它工作正常。数据库连接正常(通过 Eclipse 在 Lib 中的 sqljdbc42.jar)测试数据库位于我的 Window 开发 PC 上 链接:http://localhost:8080/App/

  2. 为了测试生产上的数据库连接是否正常工作,我有一个 Java 文件(与我的项目无关,但使用相同的数据库驱动程序和 URL。它只是用于测试生产上的数据库连接),它正确连接到位于生产上的数据库。

  3. 但是,当我将 war 文件(从本地开发环境)上传到 Tomcat WebApps 文件夹后,我收到标题中的错误,生产中的数据库未成功连接。

我使用以下驱动程序和 url 进行数据库连接

drivers=com.microsoft.sqlserver.jdbc.SQLServerDriver

url=jdbc:sqlserver://localhost;databaseName=ABC;integratedSecurity=true

在上面的url字符串中,我已经尝试了上面的localhost,还尝试了生产IP地址,服务器名称,localhost:1433localhost\\MSSQLSERVER,都得到相同的错误

我在生产站点的 ClassPath 中有以下内容:

C:\sqljdbc42.jar;C:\microsoft-mssqlserver.jar;C:\Program Files\Java\jdk1.8.0_201\bin;C:\Program Files\Java\jre1.8.0_201\bin;.

提前谢谢您。

最佳答案

您应该检查 tomcat 服务器的类加载器路径。关于docs ,您的服务器希望在以下位置找到 sqlserver 驱动程序 jar (sqljdbc42.jar):

  1. JVM 的引导类 ($JAVA_HOME/jre/lib/ext)
  2. Web 应用程序的
  3. /WEB-INF/classes
  4. Web 应用程序的
  5. /WEB-INF/lib/*.jar
  6. 系统类加载器类(通过CLASSPATH环境变量描述)
  7. 常用类加载器类($CATALINA_BASE/lib$CATALINA_HOME/lib)

因此,您可以尝试的最佳选择是:

  • 将 jar 复制到 $JAVA_HOME/jre/lib/ext (#1)
  • 或配置您的构建,以便将 jar 复制到 /WEB-INF/lib/ (#3)

Number#2适用于java类;不适合您的情况。

Number#4和#5更有可能使用tomcat自己的结构,但如果你想把jar放进去,它仍然完全合法

进一步编辑:由于某种原因,有 cases为了防止内存泄漏,Tomcat 可能会阻止 sqlserver 驱动程序。因此,如果您通过应用本文前面提到的解决方案来确定 jar 位于类路径上;您还可以尝试将以下内容添加到 server/.xml 中以禁用泄漏检查:

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" driverManagerProtection="false" />

关于java - 获取错误 java.sql.SQLException : No suitable driver found for jdbc:sqlserver://localhost;databaseName=ABC;integratedSecurity=true on Production,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54881115/

相关文章:

sql-server - Excel 工作表提示输入 SQl 登录凭据

sql-server - 如果在运行前未清除项目,将引发Grails 2.3.4 SQL异常

java - 将数据分块同步到服务器会导致 StackoverflowException

java - 使用 BeanUtils.copyProperties 导致参数类型不匹配

java - 在 Java 中使用 Google 翻译服务 api

java - 关闭小程序时运行时错误

sql-server - SQL 插入中存在非法 xml 字符

sql-server - SQL Server XML XQuery 选择 where 子句属性

mysql - 我可以重写这个 SQL 来删除重复的代码吗?

java - 递归 Java 函数调用中的 Try-catch 放置