5

在使用 Tomcat 和 Eclipse 开发 Servlet 时,我发现一旦更改了 Servlet 的代码就必须重新启动 Tomcat,否则我将看不到任何更改。

为什么我必须这样做?

有没有办法在不重启 Tomcat 的情况下看到变化?

4

2 回答 2

4

您可以配置 tomcat 以自动重新加载您的 servlet,将 Context 的 reloadable 属性配置为 true。

对于 Tomcat 7,您必须这样做。

  1. 编辑 CATALINA_HOME/conf/context.xml
  2. 改变:
<Context>

为了:

<Context reloadable="true">

CATALINA_HOME 是您的tomcat安装位置

于 2013-07-26T00:15:31.550 回答
1

您正在编辑的 java 类被编译成类文件,这些文件在 Tomcat 启动您的应用程序时由 Tomcat 类加载器加载。但是类加载器不会在 Tomcat 启动您的应用程序后尝试加载该类的新版本。

Eclipse 确实有一个称为“热代码替换”的简洁功能,但它仅在您调试应用程序时才有效。在这种情况下,Eclipse 会在您编辑时编译您的代码(无论是否在调试),然后 Eclipse 会尝试加载它编译的新编辑的类。但它仅在调试您的应用程序时有效。

另一种选择是尝试像 JRebel 这样的 JVM 插件,它可以热交换你的类,无论你是否调试。

于 2013-07-25T22:37:06.960 回答