我有一个使用本地安装Tomcat7
的web开发项目。我正在尝试使用Microsoft的jdbc驱动程序(sqljdbc41.jar
)连接到SQL Server 2012
。
sqljdbc41.jar
位于我的应用程序构建路径中:
我正在出口它。此外,在Tomcat应用程序目录的< code>lib文件夹中,我还放置了< code>sqljdbc41.jar的副本。
没有编译错误,但是在运行时,当我尝试加载SQL服务器驱动程序时,我会得到以下结果:
ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver
以下代码块中引发异常:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://"+server+":1433;databaseName="+database+";user=sa;password="+password+";";
con = (Connection) DriverManager.getConnection(connectionUrl);
我看到很多关于这个话题的帖子都没有解决:
等等。
编译器级别1.7和JRE 1.7——根据文档,我相信我使用了正确的驱动程序。这也说明必须设置类路径:
echo $CLASSPATH
/var/common/sqljdbc41.jar
它是。此外:
java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM)
64-Bit Server VM (build 24.75-b04, mixed mode)
那么,为什么我还是会遇到这种情况呢???
使现代化
我再次从微软下载了< code > sqljdbc 41 . jar
按照Mick Mnemonic的链接,我从Java Build路径中删除了jar,并将新下载的jar放在WEB应用程序的WEB-INF/lib
文件夹中。然后我重新启动了Eclipse和Tomcat服务器,并清理了Tomcat server和项目。
仍在获取ClassNotFoundException
。
我想你需要在方言类上注册:org . hibernate . dialect . SQL server 2012 dialect
如果是Spring项目,它连接到一个文件application.properties:
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2012Dialect
spring.datasource.url=jdbc:sqlserver:database;user=sa;password=password;
spring.datasource.username=sa
spring.datasource.password=password
但是这里将会完全像我不记得的那样
您需要将库添加到catalina.properties,因为您在容器核心功能的上下文中使用数据库连接,而不仅仅是作为其中的子应用程序之一。
你可以否决我的答案,但我只要求你先测试一下。
代码< code > class . forname(" com . Microsoft . SQL server . JDBC . SQL server driver ")
无法抛出ClassNotFoundExcsion-com.microsoft.jdbc.sqlserver.SQLServerDRiver
因为名字不一样。有没有可能是你在代码中设置的不正确?
我从他们的网站下载了sqljdbc41.jar,看到类的正确名称是com.microsoft.sqlserver.jdbc.SQLServerDriver
。
$ jar tf sqljdbc41.jar | grep SQLServerDriver.class
com/microsoft/sqlserver/jdbc/SQLServerDriver.class
我刚刚在Microsoft的web文档中找到了这两个名称,所以他们要么在某个时候重命名了这个类(更改了它的包),要么在他们的一些文档中出现了错误。
您需要做的就是将该.jar放在Tomcat的lib目录中(例如.apache-tomcat-7.0.67\lib
),然后重新启动Tomcat。
如果您在lib目录中有正确的类名和正确的jar,并且仍然看到该错误,我想知道您的eclipse设置中是否有某种类型的错别字,并且从eclipse部署是以某种方式强制尝试加载损坏的类名。(我不使用Eclipse,也不知道从那里部署)。
尝试创建一个非常简单的应用程序(不要告诉eclipse有关MS驱动程序类):
@WebServlet("/")
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Set response content type
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>" + "Welcome to the servlet!" + "</h1>");
try {
String server = "localhost";
String database = "testDB";
String password = "sapassword";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://"+server+":1433;databaseName="+database+";user=sa;password="+password+";";
Connection con = (Connection) DriverManager.getConnection(connectionUrl);
} catch (ClassNotFoundException e) {
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} catch (SQLException e){
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} finally {
out.println("<h1>" + "That's the end of the servlet!" + "</h1>");
}
}
}
并运行它。如果您看到如下输出:
Welcome to the servlet!
SQLServerException_The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
That's the end of the servlet!
这意味着驱动程序加载正确。连接失败b/c我当前没有运行SQLServer实例进行测试。
问题内容: 我正在IntelliJ中使用Maven。我有一类使用: pom.xml文件中的Maven依赖项: 我可以做并成功建立。但是当我尝试运行它时,我得到: 错误:java.lang.ClassNotFoundException:org.json.JSONObject 我在这里还有什么想念的吗?谢谢! 问题答案: 将json jar 添加到您的类路径 或使用 或将其添加到您的Maven pom
问题内容: 我正在尝试进行Google Maps活动,但是出现LogCat错误,我的应用程序崩溃了。注册API密钥时,我使用了android提供的编码,所以我不知道为什么它不起作用。我需要帮助解决此问题。 LogCat XML文件 Java文件 问题答案: 在文件中添加这样的内容。
问题内容: 这是我的错误代码。我的已导入为外部罐子。 堆栈跟踪: 问题答案: 这行导致,因为您尚未将文件放置在项目的lib文件夹中。或您尚未设置所需罐子的
问题内容: 因此,我今天在开发Android程序时遇到问题。我有一个将XML字符串转换为Java对象(第三方)的类,并且可以在常规Java项目中正常工作,但是在Android上却收到以下奇怪错误: 我出于明显的原因隐藏了我的应用程序名称和程序包,但我想知道是否有人遇到过此类问题。类在正确的包中,这是我添加的库。我之前引用的其他类也可以进行。还有其他原因抛出吗? 谢谢杰克 问题答案: 这是我目前拥有
我将测试web存档打包如下: 你知道我为什么会犯这样的错误吗?
问题内容: 我正在编写第一个Hadoop应用程序,但出现错误。我不太了解此堆栈跟踪中的一些细节是什么意思。这是一个。我正在Ubuntu Linux v12.10,Eclipse 3.8.0,Java 1.6.0_24上构建它。我通过从Apache站点下载并使用Ant构建它来安装Hadoop。 创建工作时,我的崩溃发生在程序的第一行。 控制台输出: 问题答案: 您应该添加找到的所有jar,以避免此类