之前是没有建server的情况下跑的,不知道为啥突然不行了。按照网上的零碎信息又处理好了,特记下来,留给自己和可能碰到类似问题的朋友。
在perference->server->runtime environment
里添加后,打开server窗口,添加一个server.
然后打开这个server,配置server location
到user tomcat installation
,即把服务部署到tomcat安装的目录。
- setver path设置到tomcat的安装目录
- Deploy path设置成webapps
需要请求起作用,就要把开发文件部署到tomcat安装主目录下的webapps
文件下。比如你建了一个tomcat project,名叫HelloWorld
,就要把HelloWorld
转移到webapps
里面。当然不是拷贝HelloWorld
文件夹,里面的一些内容需要编译或者选择拷贝。这些工作都是插件、IDE的工作,我们要的就是看看tomcat安装目录下是否生成了我们需要的app。
然后看到网上说要把项目Run on server
,可是右键项目主目录,选择 Run as
后并没有server的选项,然后查到需要配置:在项目主目录上右键,选择properties,选择Project Facets
后,勾选Dynamic Web Module
,apply之后生效。这样就有Run on server
了。
这时再回到项目主目录,Run as
->Run on server
,选择我们刚创建的server,就跑起来了。这个时候发现项目还是没有生效,虽然tomcat/webapps里面已经有我们的项目文件夹了(如HelloWorld)。后来我才发现刚配置完Project Facets
后项目发生的两个变化:
-
在主目录下多了一个
WebContent
文件夹,里面有META-INF
和WEB-INF
两个文件夹。一对比,发现部署到tomcat安装目录下的文件就是这个WebContent
里的内容。 -
在项目的
properties
里多了一个Deployment Assembly
设置项,发现里面就是“项目目录”到“部署目录”的对应关系。比如第一个就是/WebContent
和/
。
之所以现在还没部署好,是应为这时候的目录结构跟tomcat插件构建的tomcat project
的目录结构是不同的。现在是把WebContent
装配到 webapps
中的app目录里,而插件的目的是把主目录直接装配过去。至于为啥这样,现在我还没能力探索。
暂时就把web内容搬到webContent
里吧。
最后还有一点编译的问题:
在properties
->java build path
里,设置代码的编译路径,把WebContent/WEB-INF/src
里的源码编译到WebContent/WEB-INF/classes
里。这样修改代码后,实际部署的class文件才会改变。至于自动编译,参考这里:eclipse怎么不自动将src下的文件编译到WEB-INF/classes下.
网友评论