由于此数据库错误,我有一个巨大的Java项目无法运行
应用程序启动失败 找不到合适的驱动程序sqlserver:// localhost:1433; DatabaseName = XX java.sql.SQLException:没有为sqlserver找到合适的驱动程序:// localhost:1433; DatabaseName = XX 在java.sql.DriverManager.getConnection(DriverManager.java:602) 在java.sql.DriverManager.getConnection(DriverManager.java:185) at artemispm.serverutil.ConnectionPool.newConnection(ConnectionPool.java:577) at artemispm.serverutil.ConnectionPool.manageConnections(ConnectionPool.java:470) at artemispm.serverutil.ConnectionPool.getPooledConnection(ConnectionPool.java:421) at artemispm.serverutil.ConnectionPool.getConnection(ConnectionPool.java:355) at artemispm.serverutil.ConnectionPool.getConnection(ConnectionPool.java:329) at artemispm.serverutil.AppMgr.getConnection(AppMgr.java:492) at artemispm.trjdbc.TRJConnection。(TRJConnection.java:46) at artemispm.trdo.TRBaseSql.getConnection(TRBaseSql.java:2903) at artemispm.service.TRDebugWriter.transmit(TRDebugWriter.java:105) at artemispm.trapplets.DataBroker.clockedTransmit(DataBroker.java:4969) at artemispm.trapplets.DataBroker.callService(DataBroker.java:3125) at artemispm.trapplets.DataBroker.callService(DataBroker.java:3103) at artemispm.trapplets.DataBroker.initTriton(DataBroker.java:325) at artemispm.trapplets.TRApplet.init(TRApplet.java:296) 在sun.applet.AppletPanel.run(AppletPanel.java:425) 在java.lang.Thread.run(Thread.java:662)
构建版本:?版本? productpm.trdo.TRSeriousException:找不到适合sqlserver的驱动程序:// localhost:1433; DatabaseName = XX at artemispm.trapplets.DataBroker.checkError(DataBroker.java:659) at artemispm.trapplets.DataBroker.callService(DataBroker.java:3129) at artemispm.trapplets.DataBroker.callService(DataBroker.java:3103) at artemispm.trapplets.DataBroker.initTriton(DataBroker.java:325) at artemispm.trapplets.TRApplet.init(TRApplet.java:296) 在sun.applet.AppletPanel.run(AppletPanel.java:425) 在java.lang.Thread.run(Thread.java:662)
我试着放置 sqljdbc.jar sqljdbc4.jar 在%catalina_home& \ lib文件夹中,但没有帮助
我不熟悉Java,但对此有任何帮助。
编辑: 我的连接字符串在customer.properties文件中定义,如下所示: APP.url = sqlserver:// localhost:1433; DatabaseName = XX
现在我将其更改为: APP.url = jdbc:sqlserver:// localhost:1433; DatabaseName = XX
我有新错误:
应用程序启动失败Java运行时环境(JRE)版本1.6 此驱动程序不支持。使用sqljdbc4.jar类库, 它提供了对JDBC 4.0的支持。
如何切换到新驱动程序?
答案 0 :(得分:6)
您的网址应为jdbc:sqlserver://server:port;DatabaseName=dbname
。
你确定你输入的是正确的吗?
答案 1 :(得分:3)
我尝试了上述答案,但他们并没有帮助我。我不得不再尝试一下。
所以我尝试了别的东西。我复制了" sqljdbc4.jar"文件到" C:\ apache-tomcat-7.0.57 \ lib \"然后添加" sqljdbc4.jar"到我的项目的图书馆。它修复了一切。
我希望这可以帮助那些仍然遇到麻烦的人。
答案 2 :(得分:1)
来自sqljdbc_4.0文档(http://technet.microsoft.com/en-us/library/ms378526(v=sql.110).aspx):
使用sqljdbc.jar类库,应用程序必须首先注册驱动程序,如下所示: 的Class.forName(" com.microsoft.sqlserver.jdbc.SQLServerDriver&#34); 加载驱动程序后,可以使用连接URL和DriverManager类的getConnection方法建立连接:
调用DriverManager类的getConnection方法时,会从已注册的JDBC驱动程序集中找到相应的驱动程序。 sqljdbc4.jar文件包含" META-INF / services / java.sql.Driver" file,其中包含com.microsoft.sqlserver.jdbc.SQLServerDriver作为注册驱动程序。当前使用Class.forName方法加载驱动程序的现有应用程序将继续工作而无需修改。
答案 3 :(得分:0)
我将sqljdbc4.jar
复制到Tomcat文件夹中的lib文件夹中,并且还将其也添加到了我的项目中。我仍然遇到相同的异常。最后,在大量搜寻之后,我发现错误是与Tomcat有关。
Tomcat尝试防止由于sql server驱动程序而导致的内存泄漏。为了克服该异常,需要禁用,以便它将自动加载驱动程序。
要禁用,请在Tomcat中更改server.xml
并将“ JreMemoryLeakPreventionListener
”标记为FALSE。
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" driverManagerProtection="false" />
这帮助我防止了以下异常,现在它可以正常工作。