0

好吧,我的 Tomcat(通过 Eclipse 运行)似乎无法加载 SQL Server 驱动程序库:

 java.lang.NullPointerException
java.lang.RuntimeException
    at org.ktu.gdia.core.MainController.processFile(MainController.java:132)
    at org.ktu.gdia.core.MainController.run(MainController.java:57)
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.apache.tomcat.dbcp.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75)
    at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
    at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1185)
    at org.apache.tomcat.dbcp.dbcp.PoolingDriver.connect(PoolingDriver.java:180)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.ktu.gdia.database.DbActions.openConn(DbActions.java:64)
    at org.ktu.gdia.core.MainController.processFile(MainController.java:134)
    at org.ktu.gdia.core.MainController.run(MainController.java:57)
Exception in thread "Thread-2" java.lang.NullPointerException
    at org.ktu.gdia.database.GenForestDatabase.personExists(GenForestDatabase.java:178)
    at org.ktu.gdia.core.MainController.processFile(MainController.java:158)
    at org.ktu.gdia.core.MainController.run(MainController.java:57)

sqljdbc.jar 和 sqljdb4.jar 和 jtds-1.3.0.jar 位于 Tomcat/lib 目录中。我正在使用 Tomcat 7。Eclipse 是否有可能使 Tomcat 使用与它应该使用的 Tomcat 7 中不同的 lib 目录?

4

2 回答 2

1

您不需要所有这些 JAR,只需要您实际想要加载的 JAR。它似乎是 Microsoft 驱动程序,而不是 jTDS。

我不知道 Eclipse 在做什么,但 Tomcat 期望 JDBC 驱动程序 JAR 从其 /lib 目录中加载。

我不同意问题是无法加载驱动程序。“没有合适的驱动程序”通常意味着连接字符串中的 URL 语法不正确。

你有

jdbc:microsoft:sqlserver://isd.ktu.lt:1433;DatabaseName=LN2012_bakDB2

URL 建议采用以下格式:

jdbc:sqlserver://host:1433;databaseName=dbNameHere;integratedSecurity=true;

如果 URL 看起来是正确的,我会开始检查其他内容:

  1. isd.ktu.lt您可以从运行 Java 应用程序的服务器ping 服务器吗?如果您看不到该服务器,Java 也不会。
  2. 您能否使用 Microsoft SQL Server Studio 成功连接到该服务器?如果它不能,Java 也不会。
  3. 您确定 SQL Server 侦听器已配置为默认侦听端口 1433?出于安全原因,许多 DBA 会选择默认值以外的其他内容。
  4. 看起来您应该使用数据库连接池。检查您的JNDI 配置是否正确。

以下是成功连接到 SQL Server 的应用程序的配置:

    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <property name="url" value="jdbc:sqlserver://host:port;databaseName=db"/>
于 2013-03-19T16:58:07.870 回答
0

您的 URL 必须是jdbc:sqlserver://server:port;DatabaseName=yourDbName 并且类名必须是 like com.microsoft.sqlserver.jdbc.SQLServerDriver您可以从这里下载和使用 MicrosoftSQL Server JDBC Driver 2.0

于 2013-03-19T17:01:35.150 回答