9

以下堆栈跟踪是我尝试访问 servlet 时得到的,它似乎从 Tomcat 管理器运行良好。

11 Sep, 2012 11:50:12 AM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet LoginServlet as unavailable
11 Sep, 2012 11:50:12 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet LoginServlet
java.lang.Error: Unresolved compilation problems: 
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    HttpServlet cannot be resolved to a type
    ServletConfig cannot be resolved to a type
    ServletException cannot be resolved to a type
    HttpServlet cannot be resolved to a type
    ServletContext cannot be resolved to a type
    ServletException cannot be resolved to a type
    HttpServletRequest cannot be resolved to a type
    HttpServletResponse cannot be resolved to a type
    ServletException cannot be resolved to a type
    request cannot be resolved
    The method getLoggedin() from the type LoginHandler refers to the missing type ServletException
    The method destroy() of type LoginManager must override or implement a supertype method
    HttpServlet cannot be resolved to a type

    at com.login.servlets.LoginManager.<init>(LoginManager.java:5)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
    at java.lang.Thread.run(Unknown Source)
11 Sep, 2012 12:05:12 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet Log4JInitServlet as unavailable
11 Sep, 2012 12:05:12 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /logintest threw load() exception
java.lang.Error: Unresolved compilation problems: 
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    The import javax.servlet cannot be resolved
    The import org.apache cannot be resolved
    The import org.apache cannot be resolved
    HttpServlet cannot be resolved to a type
    ServletConfig cannot be resolved to a type
    ServletException cannot be resolved to a type
    ServletContext cannot be resolved to a type
    BasicConfigurator cannot be resolved
    PropertyConfigurator cannot be resolved
    BasicConfigurator cannot be resolved

    at com.logger.WebLogger.<init>(WebLogger.java:5)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3461)
    at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:943)
    at org.apache.catalina.manager.HTMLManagerServlet.reload(HTMLManagerServlet.java:557)
    at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:121)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
    at java.lang.Thread.run(Unknown Source)

在 Eclipse 类路径中使用的所有 jars 都可以在 Tomcat lib 文件夹中找到。webapp 正在部署,没有任何错误日志,但是当我尝试访问一个 servlet 时,会发生此异常,并且我将其记录在 tomcat 日志中。有人能帮忙吗?

The package names are proper inside 'classes', also, the web.xml is proper. 

我不知道为什么会发生这种情况。还有某些其他 webapps,它们几乎使用相同的运行良好的库。期待有人可以帮助我。

谢谢

4

12 回答 12

12

最后,弄错了。这是由 Eclipse 构建引起的问题。由于构建不正确,因此类文件已损坏。我清理了整个项目,重新构建,现在它工作正常。感谢您的回复。

于 2012-09-11T11:12:11.183 回答
4

在查看了异常之后,你得到了一些你放错了 jar 文件的地方

(servlet-api.jar)。它应该在您的 Project/WEB-INF/lib 文件夹下。我认为会

如果您的 jar 文件位于上面指定的路径中,则可以使用。

于 2012-09-11T09:18:38.380 回答
3

不知何故,你错过了servlet-api.jar. 它应该位于tomcat\lib文件夹中。

于 2012-09-11T09:12:10.137 回答
2

如果您收到此错误“严重:为 servlet 分配异常”以及“java.lang.InstantiationException”异常,请确保您的 servlet 类具有公共无参数构造函数,因为 servlet 容器需要能够实例化它。

如果您的 servlet 类没有定义显式的非零参数构造函数(通常是这种情况),编译器提供的默认构造函数就足够了。

于 2013-06-05T23:34:35.530 回答
2

我有同样的问题!花了2个小时寻找解决方案!就在这里!

WebContent(在Dynamic Web Project下)-> WEB-INF-> lib(它是空的-好吧)->右键单击它(lib)->构建路径->用作源文件夹。

完毕!

于 2016-01-30T14:05:33.100 回答
1

java.lang.Error: Unresolved compilation problems:”

说应用程序没有正确编译。请放入servlet-api.jar类路径中,不仅在项目的 lib 文件夹中,还要将其附加到类路径中。

请确保tomcat/common/lib文件夹中也有相同的 jar。

于 2012-09-11T09:12:15.890 回答
1

我的案例是使用Java 8 lamda 表达式和不基于 Java 8 的旧版本 Rest

于 2017-08-07T17:29:47.720 回答
0

我还看到了这个异常,其中@Resource 注释导致两种技术相互踩踏(tomcat servlet api 3 和 spring)发生冲突。

于 2013-04-16T22:23:34.167 回答
0

对我来说,它发生在我在 junit 测试中使用 Lambda 表达式时。在对测试发表评论后,服务器返回了正确的 api 响应。

于 2019-10-14T23:03:21.297 回答
0

我遇到了类似的异常
从 java 8 迁移到 java 11 时出现以下错误

servlet [health-servlet] 的异常 org.apache.catalina.core.ApplicationContext.log Servlet.init() 抛出异常 java.lang.IllegalArgumentException

为了修复错误,我升级了 pom 中的版本

<jersey.version>2.23.2</jersey.version><!-- Remove this  -->
<jersey.version>2.30.1</jersey.version><!-- Add this  -->

我的 web.xml 中有以下条目

    <servlet>
    <servlet-name>health-servlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.xyz.platform.registry.service.ServiceRegistryApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
于 2020-05-07T05:42:37.747 回答
0

转到项目属性-> 部署程序集-> 检查 Maven 依赖项是否可见,如果它们丢失,我们也会得到相同的错误。我可以解决将 Maven 依赖项添加到部署程序集中的问题。

[在部署程序集中添加Maven依赖后,看起来像这样]

https://i.stack.imgur.com/7iwaW.jpg

于 2020-06-23T13:13:29.273 回答
0

我有两个使用相同路径值 ( javax.ws.rs.Path) 注释的类/服务。当 REST API 尝试自行初始化时,很难立即看到有关重复路径的错误。

于 2021-10-28T11:44:43.447 回答