Tomcat没有加载libs

时间:2013-03-19 16:53:54

标签: java sql-server eclipse tomcat

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

 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使用不同的lib目录,然后使用它应该使用的Tomcat 7中的目录?

2 个答案:

答案 0 :(得分:1)

您不需要所有这些JAR,只需要您真正想要加载的JAR。它似乎是微软的驱动程序,而不是jTDS。

我不知道Eclipse在做什么,但是Tomcat希望从它的/ lib目录加载JDBC驱动程序JAR。

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

你有

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

This网址表示以下格式:

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

如果网址似乎正确,我会开始检查其他内容:

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

        <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        <property name="url" value="jdbc:sqlserver://host:port;databaseName=db"/>
    

答案 1 :(得分:0)

您的网址必须为jdbc:sqlserver://server:port;DatabaseName=yourDbName 和班级名称必须类似于com.microsoft.sqlserver.jdbc.SQLServerDriver。您可以从here

下载并使用MicrosoftSQL Server JDBC Driver 2.0