Tomcat根本没有部署新版本的文件--linux / eclipse

时间:2015-06-03 12:15:08

标签: linux eclipse tomcat

我遇到tomcat将我的文件部署到服务器的问题。

我已将Tomcat 7安装到/opt/tomcat7

在我的eclipse中,我已将此路径指定为我的tomcat服务器。

我的工作区目录是/home/maciej/workspace/<projects here>

现在,如果我编辑一个类文件并添加简单的日志语句

log.info("blabla");然后通过 - 在服务器上运行来部署'NEW'版本的文件,我在输出中看不到这个'blabla'。虽然我已经修改了类文件,但它似乎没有正确部署到tomcat中。 Tomcat正在阅读上帝知道什么,但肯定不是它应该阅读的文件。

编辑:我已经在eclipse中重新配置了我的tomcat,现在:

Server Path = /opt/tomcat7
Deploy Path = /opt/tomcat7/webapps <- used to be .metadata/blablabla default 
                                      eclipse tomcat location

当我在参数/工作目录下打开“打开午餐配置”时,默认选项是带有灰色路径的票证/home/maciej/Desktop

这是否也应该改变?

是不是tomcat工作目录/opt/tomcat7/work

有任何建议/想法吗?由于我无法开发应用程序,因此这个问题稍微让我感到紧张。

3 个答案:

答案 0 :(得分:1)

Tomcat installation directory与您在Window&gt;中看到的模式中的Preferences相同Server&gt; Runtime Environments&gt;点击Edit/opt/tomcat7。应该设置为Deploy Path或Tomcat安装的根目录。

Server Path相对于webapps。它应该是Servers,除非你已经有了东西并且想要一个单独的目录。在关闭Tomcat并通过Modules auto reload by default视图删除其下方的所有Web应用程序之前,您将无法对其进行编辑。

如果您信任JDK热交换,请尝试取消选中list($width, $height) = getimagesize("http://www.example.com/resize/size/path"); ,如果您正在使用JDK 1.7或1.8,并且只想查看插入的日志语句,则应该这样做。

您提到的工作目录只是Tomcat用于在崩溃等情况下吐出线程转储的根目录。它与Tomcat&#34; work&#34;无关。 。目录

答案 1 :(得分:0)

打开服务器视图:Window-&gt; Show view-&gt; Other-&gt; Servers。选择正确的服务器,右键单击,选择“清理”,然后重新启动tomcat。它应该有所帮助。

答案 2 :(得分:0)

如果您在项目中更改某些内容,那么Eclipse将自动构建并将文件“部署”到您指定的位置。默认情况下,Eclipe的工作在那里停止,剩下的工作由tomcat决定。

Tomcat与任何Java Web服务器一样,检测JSP中的更改并重新编译它们。然而,由于Java类加载的工作方式,类中的更改不起作用。对于tomcat使用的新版本,您需要:

  1. 之前没有加载过该课程。例如,您启动tomcat但在执行任何请求之前会看到错误。如果您更改了类,那么将使用该更改,因为该类尚未加载。
  2. 重新加载应用程序。这意味着所有类都被丢弃,一切都开始新鲜。
  3. 默认情况下,重新加载应用程序的最简单方法是对web.xml进行更改。如果您查看tomcat的配置conf/context.xml,您会看到WEB-INF/web.xml受到监控。任何更改都将触发上下文的重新加载。因此,您可以对文件进行人为更改,也可以添加WEB-INF/version.properties之类的资源,并为任何版本生成不同的version.properties

    无论如何,重新加载复杂的应用程序需要时间。这就是为什么有像JRebel这样的插件。但在你沿着这条路走下去之前(这会给你的设置添加另一个移动部件),你也可以尝试使用Eclipe支持热代码替换。你在debug中启动tomcat,用Eclipse连接它,然后更改一些类。 Eclipse将尝试重新编译该类并将新定义上载到 tomcat 。如果它失败了,它会告诉你。作为一般规则,当您更改程序的结构时它将失败,并且当您只更改方法的实现时会成功。