如何在eclipse web项目中安装jdbc驱动程序而不面临java.lang.classnotfoundexception

9njqaruj  于 2021-07-03  发布在  Java
关注(0)|答案(13)|浏览(425)

有一个与我的问题非常相似的问题,但是在我的例子中,我的构建路径中没有任何重复的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。你能帮我弄清楚吗?

hpcdzsge

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中)。
清理你的项目停止你的服务器-最后试着运行。

nbnkbykc

nbnkbykc2#

将mysql-connector-java-5.1.6-bin.jar放到\apache tomcat 6.0.18\lib文件夹中。你的问题会解决的。

5jvtdoz2

5jvtdoz23#

其他人关于使驱动程序jar可用于servlet容器的看法是正确的。我的评论意在建议您从命令行验证驱动程序本身是否完好无损。
而不是一个空的 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-connector-java-5.1.12-bin.jar
$ javac LoadDriver.java 
$ java -cp mysql-connector-java-5.1.12-bin.jar:. LoadDriver

在你的平台上,你需要使用 ; 作为路径分隔符,这里和这里讨论。

q35jwt9p

q35jwt9p4#

唯一适合我的解决方案是将.jar文件放在web inf/lib下。希望这会有帮助。

vdzxcuhz

vdzxcuhz5#

只需遵循以下步骤:
1) 安装eclipse
2) 将apache导入eclipse
3) 安装mysql
4) 下载mysqlconnector/j
5) 解压压缩后的文件,在其中导航,直到你得到bin文件。然后将包含bin的文件夹中的所有文件放在c:\program files\mysql\mysql server5.1/中,然后在eclipse中定义驱动程序时给出与地址相同的路径。
这些都很简单,伙计们。

mtb9vblg

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类路径不工作

lymgl2op

lymgl2op7#

很多次我都面临着这个问题,我经历了classnotfoundexception。如果jar不在物理位置。
因此,请确保.jar文件(mysql connector)位于web inf lib文件夹的物理位置。确保使用cmd中的shutdown命令重新启动tomcat。应该有用。

ioekq8ef

ioekq8ef8#

对于此错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

你需要:

Import java.sql.*;
Import com.mysql.jdbc.Driver;

即使它直到应用程序运行才被使用。

dly7yett

dly7yett9#

既然你正在运行它 servlet ,您需要让servlet容器能够访问jar。您可以将连接器作为应用程序的一部分 war 或者将其作为servlet容器的扩展库和数据源管理的一部分(如果有)。第二部分完全取决于你所拥有的容器。

ve7v8dk2

ve7v8dk210#

将MySQL连接器Java5.1.38Bi.jar放到C:\程序文件\ Apache软件基金会\Tomcat 7 \ LIB文件夹中。

dgtucam1

dgtucam111#

我的问题有点不同。而不是 jdbc:oracle:thin:@server:port/service 我把它当作 server:port/service .
失踪的是 jdbc:oracle:thin:@url globalnamingresources.resource中的属性。但我忽略了tomcat的例外

java.sql.SQLException: Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL 'server:port/service'
qeeaahzv

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 (或任何替代方案)来管理项目依赖关系

fcipmucu

fcipmucu13#

假设您的项目基于maven,请将其添加到pom中:

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.26</version>
    </dependency>

保存>构建>并再次测试连接。真管用!实际的mysql java连接器版本可能会有所不同。

相关问题