【问题标题】:Tomcat does not recognize the MySQL .jar libraryTomcat 无法识别 MySQL .jar 库
【发布时间】:2010-12-09 06:40:21
【问题描述】:

我尝试了几种不同的方法,以便 Tomcat 在运行我的 Web 应用程序时加载 MySQL 驱动程序。我使用的是 Ubuntu 8.04,库来自 libmysql-java 包。它们位于如下所示的目录中:

~$ ls /usr/share/java/mysql* /usr/share/java/mysql-connector-java-5.1.5.jar

我的 CLASSPATH 包含这个文件:

~$ 回声 $CLASSPATH .:/usr/lib/jvm/java-6-sun/bin:/usr/local/tomcat/lib/servlet-api.jar:/usr/share/java/mysql-connector-java-5.1.5.jar

我什至将 .jar 文件的副本放在我的网络应用程序的 WEB-INF/lib/ 目录中:

/usr/local/tomcat/webapps/ohms/WEB-INF/lib$ ls mysql-connector-java-5.1.5.jar

进行这些更改后,我重新启动 Tomcat,重新编译我的类,再次重新启动 Tomcat。另外,我正在使用 import java.sql.*;

导入必要的库

但是,当它运行Class.forName("com.mysql.jdbc.Driver").newInstance(); 行时,我仍然收到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 错误

我在这里做错了什么?

【问题讨论】:

    标签: java mysql tomcat


    【解决方案1】:

    把它放在 TOMCAT_HOME/lib 中。 (我似乎记得在旧版本的 Tomcat 上,它是 TOMCAT_HOME/server/lib?)

    它不会在 WEB-INF/lib 中工作,因为容器需要访问库,也就是说,将它放在一个 Web 应用程序的类加载器中,而不是容器中。虽然我会想象 CLASSPATH 方法会起作用,但这不是执行此操作的标准方法。也许还有其他一些阻碍它工作的障碍。

    【讨论】:

    • 已将java/mysql-connector-java-5.1.5.jar 添加到/usr/local/tomcat/lib/,仍然没有骰子。
    • 不是 java/mysql-connector-java-5.1.5.jar。直接在/usr/local/tomcat/lib下添加mysql-connector-java-5.1.5.jar即可。
    • 这就是我的意思,这是一个错字
    • 另外,我什至尝试从官方网站下载最新版本的 mysql-connector,将其放在 tomcat/lib 下,并删除对该库的任何其他引用。
    【解决方案2】:

    Tomcat 会忽略任何 CLASSPATH 环境变量,所有 Java EE 应用服务器和 IDE 也是如此。那对你一点好处都没有。我没有在我使用的任何机器上设置一个。

    对于 Tomcat 5.x,JAR 需要放在 Tomcat server/lib 中,对于 6.x,JAR 需要放在 /lib 中。

    你不需要调用 newInstance(); Class.forName("com.mysql.jdbc.Driver") 就足够注册驱动类了。

    【讨论】:

    • 准确地说,默认启动脚本(例如catalina.sh)忽略(或者更确切地说,覆盖)CLASSPATH 而不是Tomcat 本身。我见过并非如此的 RPM。不知道 Ubuntu 8.04 发行版附带的是否是其中之一。生成的类路径由 Tomcat 的系统类加载器使用。
    • 正确。这就是我使用 Tomcat、WebLogic、JBOSS、IntelliJ 和 Eclipse 的经验。没有人考虑系统 CLASSPATH。
    【解决方案3】:

    将mysql连接器复制到/usr/share/tomcat7/lib

    【讨论】:

      【解决方案4】:

      如果您不想将文件放入 Tomcat lib 目录,您可能还想做另一件事。它在 catalina.sh 中声明它将检查 setenv.sh 是否有一个变量集以包含外部 jars。因此,例如,正如我所做的那样,您可以创建这个文件:

      $CATALINA_HOME/bin/setenv.sh
      

      内容:

      CLASSPATH=lib/mysql-connector-java-5.1.33-bin.jar
      

      jar 的路径将相对于您启动 Tomcat 的位置,也称为您的工作目录。因此,例如,在我的例子中,我从 $CATALINA_HOME 两层的 Ant 脚本启动 Catalina,而我的 lib 目录就在该点的正下方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 2019-09-22
        • 1970-01-01
        • 1970-01-01
        • 2020-04-05
        相关资源
        最近更新 更多