【问题标题】:mysql-connector strange behaviour in TomcatTomcat中的mysql-connector奇怪行为
【发布时间】:2016-11-12 23:49:52
【问题描述】:

我正在尝试使用 tomcat 部署应用程序。一切正常,除了我预计从 WEB-INF>lib 目录中删除连接器文件(mysql-connector-java-5.1.40)后会出错,但是,令人惊讶的是,没有它仍然可以工作。所以,我的问题是 Tomcat 是否将连接器保存在其他地方(我在 Tomcat 目录中搜索过,但一无所获)。要启动 Tomcat,我使用 Tomcat 的 bin 目录中的 startup.bat。 我的mysql db连接的简单代码:

public void jspInit() throws JSPException{
        try{
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
            pst.con.prepareStatement("insert into employee values(?,?,?)");
        }
        catch(Exception e{
            e.printStackTrace();
        }

    }

【问题讨论】:

  • 你在哪里搜索过?
  • 所有可能的目录...在 Apache Tomcat 8.0.27/ 、netbeans 等下。
  • 你有另一个使用相同数据源的 web 应用吗?

标签: java mysql tomcat


【解决方案1】:

如果在删除 MySQL 驱动程序 jar 时让 Tomcat 继续运行,Tomcat 仍然会将 Java 字节码加载到 JVM 中。删除jar时是否重启了Tomcat?

更新

寻找...

  • 某个共享类路径位置中的 JDBC 驱动程序 jar 副本,例如 Tomcat/shared/lib
  • 您的 web 应用中的 JDBC 驱动程序 jar 的第二个副本(使用不同的名称)
  • 您是否在这台机器上设置了CLASSPATH 环境变量?也许来自另一个项目?

【讨论】:

  • 是的,这很奇怪...:)
  • 什么意思?这个回应有帮助吗?或者您有更多信息要提供吗?
  • 对不起,我不清楚。我已经重新启动了服务器,并且在没有连接器的情况下仍然可以工作。我尝试了多种浏览器。
  • 我已经删除了所有其他项目(即使我没有在那里找到该文件),并且在重新启动 Tomcat 后按预期工作。 “java.lang.ClassNotFoundException: com.mysql.jdbc.Driver”- 所以,我猜 Tomcat 将文件保存在一个我不知道的临时隐藏目录中。感谢您的支持。
【解决方案2】:

如果您的系统上有 jmap,您可以尝试jmap -histo <PID>,以确保您实际加载了 MySQL 驱动程序类。

当您的应用程序正在运行时,您还可以尝试lsof |grep ".*mysql.*jar" 之类的方法来查看是否有 jar,但请记住您也可以在某个地方找到源代码。 (在这种情况下,只需 grep 或 findit )

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 2019-01-28
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多