在使用 Tomcat 和 Eclipse 开发 Servlet 时,我发现一旦更改了 Servlet 的代码就必须重新启动 Tomcat,否则我将看不到任何更改。
为什么我必须这样做?
和
有没有办法在不重启 Tomcat 的情况下看到变化?
您可以配置 tomcat 以自动重新加载您的 servlet,将 Context 的 reloadable 属性配置为 true。
对于 Tomcat 7,您必须这样做。
<Context>
为了:
<Context reloadable="true">
CATALINA_HOME 是您的tomcat安装位置
您正在编辑的 java 类被编译成类文件,这些文件在 Tomcat 启动您的应用程序时由 Tomcat 类加载器加载。但是类加载器不会在 Tomcat 启动您的应用程序后尝试加载该类的新版本。
Eclipse 确实有一个称为“热代码替换”的简洁功能,但它仅在您调试应用程序时才有效。在这种情况下,Eclipse 会在您编辑时编译您的代码(无论是否在调试),然后 Eclipse 会尝试加载它编译的新编辑的类。但它仅在调试您的应用程序时有效。
另一种选择是尝试像 JRebel 这样的 JVM 插件,它可以热交换你的类,无论你是否调试。