有一个与我的问题非常相似的问题,但是在我的例子中,我的构建路径中没有任何重复的jar,所以这个解决方案对我不起作用。我已经在google上搜索了几个小时了,但是我在那里找到的解决方案都没有解决我的问题。我正在为家庭作业创建一个带有数据库连接的网站。我使用的是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添加到我的构建路径中,我选择了 mysql-connector-java-5.1.12-bin.jar
.
每次尝试使用servlet时,我都会遇到相同的错误,无论是否有jar。你能帮我弄清楚吗?
13条答案
按热度按时间hpcdzsge1#
如果问题仍然存在,
将-mysql-connector-java-5.0.8-bin jar放在tomcat->lib->文件夹中的一个位置(不管您在哪里安装了tomcat)。并更改您的环境变量(通过单击mycomputer属性-高级系统设置-环境变量来完成),并将新的变量名和变量值设置为lib文件所在的位置;在路的尽头)
如果问题仍然存在,请尝试下载commons-collections-2.0.jar(http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html)并将jar粘贴到mysql jar所在的位置(即tomcat lib中)。
清理你的项目停止你的服务器-最后试着运行。
nbnkbykc2#
将mysql-connector-java-5.1.6-bin.jar放到\apache tomcat 6.0.18\lib文件夹中。你的问题会解决的。
5jvtdoz23#
其他人关于使驱动程序jar可用于servlet容器的看法是正确的。我的评论意在建议您从命令行验证驱动程序本身是否完好无损。
而不是一个空的
main()
,请尝试这样的操作,改编自包含的文档:在我的平台上,我会这样做:
在你的平台上,你需要使用
;
作为路径分隔符,这里和这里讨论。q35jwt9p4#
唯一适合我的解决方案是将.jar文件放在web inf/lib下。希望这会有帮助。
vdzxcuhz5#
只需遵循以下步骤:
1) 安装eclipse
2) 将apache导入eclipse
3) 安装mysql
4) 下载mysqlconnector/j
5) 解压压缩后的文件,在其中导航,直到你得到bin文件。然后将包含bin的文件夹中的所有文件放在c:\program files\mysql\mysql server5.1/中,然后在eclipse中定义驱动程序时给出与地址相同的路径。
这些都很简单,伙计们。
mtb9vblg6#
对于webapp使用的jar文件风格的每个“第三方”库,只需在webapp的
/WEB-INF/lib
. 它将在webapp的默认类路径中可用。而且,eclipse非常聪明地注意到了这一点。无需与buildpath争论。但是,请确保删除之前添加的所有不必要的引用,否则可能会发生冲突。另一种方法是通过将物理jar文件放到服务器本身中,将其安装到服务器本身中
/lib
文件夹。当您使用服务器提供的jdbc连接池数据源时,这是必需的,而jdbc连接池数据源又需要mysql jdbc驱动程序。另请参见:
如何在不面对java.lang.classnotfoundexception的情况下向war项目添加jar库?类路径vs构建路径vs/web inf/lib
在基于servlet的应用程序中,我应该如何连接到jdbc数据库/数据源?
我必须在哪里放置tomcat连接池的jdbc驱动程序?
jdbc类路径不工作
lymgl2op7#
很多次我都面临着这个问题,我经历了classnotfoundexception。如果jar不在物理位置。
因此,请确保.jar文件(mysql connector)位于web inf lib文件夹的物理位置。确保使用cmd中的shutdown命令重新启动tomcat。应该有用。
ioekq8ef8#
对于此错误:
你需要:
即使它直到应用程序运行才被使用。
dly7yett9#
既然你正在运行它
servlet
,您需要让servlet容器能够访问jar。您可以将连接器作为应用程序的一部分war
或者将其作为servlet容器的扩展库和数据源管理的一部分(如果有)。第二部分完全取决于你所拥有的容器。ve7v8dk210#
将MySQL连接器Java5.1.38Bi.jar放到C:\程序文件\ Apache软件基金会\Tomcat 7 \ LIB文件夹中。
dgtucam111#
我的问题有点不同。而不是
jdbc:oracle:thin:@server:port/service
我把它当作server:port/service
.失踪的是
jdbc:oracle:thin:@
在url
globalnamingresources.resource中的属性。但我忽略了tomcat的例外qeeaahzv12#
不应该做的事情(尤其是在处理共享项目时)
好的,在我读了同样的问题,在这里和其他地方的一些答案之后。看来
external lib
进入WEB-INF/lib
这不是个好主意吗pollute webapp/JRE libs with server-specific libraries
-有关更多信息,请查看此答案“我不推荐的另一种解决方案是:将其复制到tomcat/lib文件夹中。尽管这可能有效,但管理共享(例如git)项目的依赖关系将很困难。
好的解决方案1
创建
vendor
文件夹。把你所有的外线都放在那里。然后,将此文件夹作为依赖项Map到项目。在eclipse中,您需要将文件夹添加到
build path
Project Properties
->Java build path
Libraries
->添加外部库或任何其他解决方案来添加文件/文件夹将生成路径添加到
deployment Assembly
(参考)Project Properties
->Deployment Assembly
Add
->Java Build Path Entries
现在,您应该看到构建路径上的库列表,您可以指定这些库包含在已完成的war中。选择你想要的并点击finish。
好的解决方案2
使用
maven
(或任何替代方案)来管理项目依赖关系fcipmucu13#
假设您的项目基于maven,请将其添加到pom中:
保存>构建>并再次测试连接。真管用!实际的mysql java连接器版本可能会有所不同。