📅  最后修改于: 2023-12-03 15:05:36.669000             🧑  作者: Mango
当使用Tomcat部署Java Web项目时,有时候会出现以下错误信息:
找不到符号:@WebServlet
这是因为在Java 5及以上版本中引入了注解功能,而Tomcat默认使用的是Java 1.4(或更低版本)的编译器,因此无法识别@WebServlet
这种注解。
要解决这个问题,可以尝试以下两种方法:
在Tomcat的conf
目录下找到catalina.properties
文件,编辑该文件,找到以下这行代码:
#List of comma-separated packages that start with or equal this string
#will cause a security exception to be thrown unless the exception is
#specifically permitted in a policy file.
#org.apache.catalina.security.SecurityClassLoad.securityManagerClass=
在该行代码下面添加以下新代码:
# Set Tomcat compiler's source and target levels
tomcat.util.scan.DefaultJarScanner.jarsToSkip=\
tomcat-*.jar, \
antlr-*.jar, \
apache-*.jar, \
commons-*.jar, \
jasper-*.jar, \
jsp-api*.jar, \
junit-*.jar, \
servlet-api*.jar, \
tar-*.jar, \
tomcat-util-*.jar
# Set Tomcat compiler's source and target levels
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
tomcat-*.jar, \
antlr-*.jar, \
apache-*.jar, \
commons-*.jar, \
jasper-*.jar, \
jsp-api*.jar, \
junit-*.jar, \
servlet-api*.jar, \
tar-*.jar, \
tomcat-util-*.jar
org.apache.catalina.STRICT_SERVLET_COMPLIANCE=false
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
org.apache.tomcat.util.http.ServerCookie.ALLOW_EQUALS_IN_VALUE=true
保存文件后,重启Tomcat,就可以使用Java 5或更高版本的注解了。
在项目的Classpath中添加servlet-api.jar
即可。
以上是两种解决方法,实际情况可能因为版本和配置的差异而有所不同,需要根据具体情况进行调整。