这是宝宝第一次在技术网站上发帖,这次必须要写一下了- -。
之前一直在用tomcat6,由于要用到webSocket无奈把tomcat升级到了8,但是一直提示404,参考了一些网上的资料后试着改了一晚上终于弄好了,下面把方法分享出来,希望小伙伴们少走弯路吧⊙﹏⊙‖∣
1.右键项目(Eclipse)->Propperties->Project Facets->Dynamic Web Module 改成3.1,如果不能修改请优先修改其下方Java对应版本,我用的是1.7的JDK,则改为1.7,否则会提示类似“Dynamic Web Module *.* requires Java *.* or newer.”的错误。
如果依然不能修改,找到如下文件并修改:
"X:\workSpace\projectName\.settings\org.eclipse.wst.common.project.facet.core.xml"
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="java"/>
<fixed facet="jst.web"/>
<fixed facet="wst.jsdt.web"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="jst.web" version="3.1"/>
<installed facet="java" version="1.7"/>
</faceted-project>
2.修改Web.xml配置文件,因为之前是tomcat6和JDK1.6创建的,所以我们需要对老版本Web.xml进行修改,老版本头部如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
</web-app>
我们改为:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<!-- 这里放filter -->
<display-name>[your project name]</display-name>
<description>
[your project description]
</description>
<!-- 这里放jsp-config和index 404等错误页 -->
</web-app>
注意上面写的时候不要带"[ ]"方括号
3.我们把eclipse中项目close然后从新打开并重新构建~这样再放到tomcat8中部署就正常了
4.(送点小经验⊙﹏⊙)我个人喜欢虚拟目录方式部署,在不修改Server.xml和复制class到tomcat中的同时可以直接看到的最新结果
打开你的Tomcat目录并找到"Tomcat\conf\Catalina\localhost"目录,没有可以自己手动创建文件夹,并在其目录下创建ROOT.xml并编辑,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/" docBase="X:\workSpace\projectName\WebRoot" crossContext="true" debug="3" privileged="true" reloadable="true" deubt="true">
</Context>
这样我们通过eclipse启动tomcat(非自带tomcat控件,具体可以自己来百度关键词为"com.sysdeo.eclipse.tomcat_3.3.1.jar")的时候就可以直接对eclipse中代码进行断点跟踪了
这里还要补充下:虚拟目录的部署方式是为了模拟生产环境中的url结构,这样可以不用在http://localhost:8080/projectName/的方式进行项目访问,而是http://localhost:8080/,当然如果你把8080端口改成80就跟生产环境一模一样了,但缺点也很明显,顶级域只能部署一个项目,如果需要切换项目,这里也有个小窍门:
将前面创建好的ROOT.xml复制一份改为“ROOT.xml.test”,并将其中的路径指定为第2个项目的WebRoot或WebContent下,因为.test后缀tomcat并不会识别和生效,这样我们切换项目只要打开这个配置文件目录,把后缀一改就可以了。
最后,感谢OSChina 、 JAVA极速WEB+ORM框架 JFinal 项目以及JFinal 2k群中所有帮助过我的小伙伴们!
来源:oschina
链接:https://my.oschina.net/u/3156074/blog/1559024