代码之家  ›  专栏  ›  技术社区  ›  Murat Ayfer

Tomcat无法识别MySQL.jar库

  •  0
  • Murat Ayfer  · 技术社区  · 16 年前

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

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

    ~$ echo $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
    

    我甚至在我的WEB应用程序的WEB-INF/lib/目录中放了一个.jar文件的副本:

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

    import java.sql.*;

    但是我还是得到了 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 运行线路时出错 Class.forName("com.mysql.jdbc.Driver").newInstance();

    我在这里做错什么了?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Sean Owen    16 年前

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

        2
  •  1
  •   duffymo    16 年前

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

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

    不需要调用newInstance();Class.forName(“com.mysql.jdbc.Driver”)就足以注册驱动程序类。

        3
  •  1
  •   Martin    12 年前

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

        4
  •  1
  •   Byron Katz    11 年前

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

    $CATALINA_HOME/bin/setenv.sh
    

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

    jar的路径将与启动Tomcat的位置相关,也称为工作目录。例如,在我的例子中,我从一个Ant脚本启动Catalina,这个脚本比$CatalinaúHOME高出两个级别,而我的lib目录就在这一点的正下方。