如何在Eclipse Web项目中安装JDBC驱动程序而不面临java.lang.ClassNotFoundexception
有一个非常类似的问题 ,但在我的情况下,我没有任何重复的jar子在我的构buildpath,所以解决scheme不适合我。 我search了几个小时的谷歌现在,但没有任何我find的解决scheme实际上解决了我的问题。 我正在创build一个网站,提供一些用于作业的数据库连接。 我正在使用MySQL数据库,在Eclipse中开发并在Windows上运行。
我不断得到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
与下面的代码:
import java.sql.*; //... public void someMethodInMyServlet(PrintWriter out) { Connection connection = null; PreparedStatement query = null; try { out.println("Create the driver instance.<br>"); Class.forName("com.mysql.jdbc.Driver").newInstance(); out.println("Get the connection.<br>"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret"); query = connection.prepareStatement( "SELECT * FROM customers"); //... } catch (Exception e) { out.println(e.toString()+"<br>"); } } //...
当我运行上面的代码,我得到以下输出:
Create the driver instance. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
它不会超过Class.forName...
行,我不明白为什么! 这是我做的:
- 下载mysql连接器。
- 把它放在我的MySQL文件夹
C:\Program Files\MySQL\mysql-connector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar
。 - 在Eclipse中打开项目属性。
- 添加外部jar到我的生成path,我select了
mysql-connector-java-5.1.12-bin.jar
。
每次我尝试使用servlet时,无论我在那里有jar还是不在,都会得到相同的错误。 你能帮我弄清楚吗?
对于/WEB-INF/lib
应用程序要使用的JAR文件的每个“第三方”库,只需将物理JAR文件复制/放入webapp的/WEB-INF/lib
。 它将在webapp的默认类path中可用。 另外,Eclipse很聪明,可以注意到这一点。 没有必要与buildpath混淆。 但是,请务必删除之前添加的所有不必要的引用,否则可能会发生冲突。
另一种方法是将物理JAR文件放在服务器自己的/lib
文件夹中,将其安装在服务器本身中。 当您使用服务器提供的JDBC连接池数据源时,需要使用MySQL JDBC驱动程序,这是必需的。
也可以看看:
- 如何将JAR库添加到WAR项目而不面临java.lang.ClassNotFoundException? 类pathvs构buildpathvs / WEB-INF / lib
- 我应该如何在基于servlet的应用程序中连接到JDBC数据库/数据源?
- 我要在哪里放置用于Tomcat连接池的JDBC驱动程序?
- JDBC CLASSPATH不起作用
由于您正在使用servlet
运行它,因此您需要让servlet容器可以访问该jar。 您可以将连接器作为应用程序war
一部分,或者将其作为servlet容器的扩展库和数据源pipe理工具的一部分(如果有的话)。 第二部分完全取决于你拥有的容器。
将mysql-connector-java-5.1.6-bin.jar放置到\ Apache Tomcat 6.0.18 \ lib文件夹中。 你的问题将被解决。
其他人正确的使驱动程序JAR可用于您的servlet容器。 我的意见是build议你从命令行validation驱动程序本身是否完好无损。
而不是一个空的main()
,尝试像这样,从所包含的文档改编:
public class LoadDriver { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); } }
在我的平台上,我会这样做:
$ ls mysql-connector-java-5.1.12-bin.jar MySQL的连接器的Java-5.1.12-bin.jar $ javac LoadDriver.java $ java -cp mysql-connector-java-5.1.12-bin.jar :. LoadDriver
在你的平台上,你需要使用;
作为path分隔符,正如这里和这里所讨论的那样。
只需按照以下步骤操作
1)安装eclipse
2)导入Apache到eclipse
3)安装mysql
4)下载mysqlconnector / J
5)解压缩压缩文件,直到findbin文件。 然后将包含bin的文件夹中的所有文件放到C:\ Program Files \ mysql \ mysql server5.1 /中,然后在eclipse中定义驱动程序时给出与地址相同的path。
这是非常容易的家伙。
如果问题仍然存在,
把mysql-connector-java-5.0.8-bin jar放在你的Tomcat-> lib->文件夹里(不pipe你在哪里安装Tomcat)。 然后改变你的环境variables(通过点击属性Mycomputer – 高级系统设置 – 环境variables完成 – 并设置一个新的variables名称和variables值作为你的lib文件所在的位置。不要忘记input;在path的末尾)
如果问题仍然存在请尝试下载commons-collections-2.0.jar( http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html )并将jar粘贴到你的mysql jar所在的地方即)在Tomcat-lib中。
清理你的项目 – 停止你的服务器 – 最后尝试运行。
很多时候我一直面临这个问题,我遇到过ClassNotFoundException。 如果瓶子不在物理位置。
所以请确保WEB-INF lib文件夹的物理位置的.jar文件(mysql连接器)。 并确保使用cmd中的shutdown命令重新启动Tomcat。 它应该工作。
唯一的解决scheme是将.jar文件放在WEB-INF / lib下。 希望这会有所帮助。
假设你的项目是基于maven的,把它添加到你的POM中:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency>
保存>生成>并再次testing连接。 有用! 你的实际mysql java连接器版本可能会有所不同
你不应该做什么(特别是在共享项目上工作时)
好吧,之后有同样的问题,并在这里和其他地方阅读一些答案后。 似乎将external lib
放入WEB-INF/lib
不是好主意,因为它pollute webapp/JRE libs with server-specific libraries
– 有关更多信息,请检查此答案“
我不build议的另一个解决scheme是: 将其复制到tomcat / lib文件夹中 。 虽然这可能会起作用,但是很难pipe理一个共享(例如git)项目的依赖性。
好的解决方法1
创buildvendor
文件夹 把所有的外部库放在那里。 然后,将此文件夹作为依赖项映射到您的项目。 在日食中,你需要
- 将您的文件夹添加到
build path
-
Project Properties
– >Java build path
-
Libraries
– >添加外部库或任何其他解决scheme来添加您的文件/文件夹
-
- 将您的构buildpath添加到
deployment Assembly
( 参考 )-
Project Properties
– >Deployment Assembly
-
Add
– >Java Build Path Entries
- 您现在应该可以看到构buildpath上的库列表,您可以指定这些库包含在完成的WAR中。
- select你想要的,然后点击完成。
-
好的解决scheme2
使用maven
(或其他)来pipe理项目依赖
将mysql-connector-java-5.1.38-bin.jarjoin到C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ lib文件夹中。
Right click on the Project, go to Properties. Choose Deployment Assembly (if not found, read the update part) from the left pane. Check if Java Build Path Entries are provided. If not, click on Add and include it. If it is already present, click Add to include your connector jar as Archive. Do a Project>Clean, restart your Server.
对于这个错误:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
你需要:
Import java.sql.*; Import com.mysql.jdbc.Driver;
即使它没有使用,直到应用程序运行。