我知道了 我必须扩展启动Tomcat 8.0.12服务器的方式。
但是,必须完成三件事:
web-app version
在web.xml中必须至少为3.0(我使用3.1)metadata-complete
在web.xml中可能不是真的(default is "false"
)classes
开始之前必须将目录添加到嵌入式Tomcat
这是web.xml文件的示例:
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.1" metadata-complete="false" 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"> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list></web-app>
这是我的Tomcat主类的样子(现在支持@WebServlet注释):
public static void main(String[] args) throws Exception { String contextPath = "/"; String webappDirLocation = "src/main/webapp/"; String baseDirectory = new File(webappDirLocation).getAbsolutePath(); Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); StandardContext context = (StandardContext) tomcat.addWebapp(contextPath, baseDirectory); // Additions to make @WebServlet work String buildPath = "target/classes"; String webAppMount = "/WEB-INF/classes"; File additionalWebInfClasses = new File(buildPath); WebResourceRoot resources = new StandardRoot(context); resources.addPreResources(new DirResourceSet(resources, webAppMount, additionalWebInfClasses.getAbsolutePath(), contextPath)); context.setResources(resources); // End of additions tomcat.start(); tomcat.getServer().await();}


