严重:为servlet helloworld Apache-Tomcat 7.0.23分配异常 [英] SEVERE: Allocate exception for servlet helloworld Apache-Tomcat 7.0.23
问题描述
我一直在尝试运行一个"Hello World" Servlet应用程序两周,我在网络上尝试了许多示例,现在求助于Safari书中找到的一个示例,唯一的区别是我已经为了简化问题,删除了程序包名称及其后续目录结构:
Apache Tomcat 7
作者:Aleksa Vukotic;詹姆斯·古德威尔
发行人:Apress
它只是归结为"Hello World" Servlet失败,并阻止了我为面试做更多的事情.我确实是从Eclipse开始的,但是正如您所说的那样,它的清洁程序可以使用命令行,当我最初出现问题时就可以使用它,因为我最初以为是构建问题/部署冲突,可能是这样,但是我对此一无所知怎么了我也运行最新的tomcat 7和最新的jdk/jre.我仅使用以下命令行构建:
I have been trying to get a ''Hello World'' Servlet application running for two weeks I have tried many examples on the web and now resorted to one found at Safari-books, the only difference is I''ve removed the package name and its subsequent directory structure in order simplify the problem:
Apache Tomcat 7
By: Aleksa Vukotic; James Goodwill
Publisher: Apress
It just comes down to a ''Hello World'' Servlet which fails and is preventing me from doing something more meatier for the interview. I did start out with Eclipse but as you say its cleaner to use the command line which I did when my problems started occurring as I initially thought it was a build issue/deployment conflict, which it probably is but I''m clueless as to what though. I too run the latest tomcat 7 and latest jdk/jre. I build with simply the command line as:
javac HelloWorldServlet.java -cp CATALINA_HOME/lib/servlet-api.jar
我将CLASSPATH设置为.; c:\ apache-tomcat-7.0.23-windows-x86 \ apache-tomcat-7.0.23 \ servlet-api.jar
我复制HelloWorldServlet.java和复制HelloWorldServlet.class,它构建的很好.
我的HelloWorldServlet.java:
I set my CLASSPATH to .;c:\apache-tomcat-7.0.23-windows-x86\apache-tomcat-7.0.23\servlet-api.jar
It builds fine I copy the HelloWorldServlet.java and I copy the HelloWorldServlet.class
My HelloWorldServlet.java:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorldServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
我的web.xml:
My web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Chapter 2</display-name>
<description>Apress demo</description>
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>
HelloWorldServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/hello.html</url-pattern>
</servlet-mapping>
</web-app>
我的目录结构如下:
My Directory structure looks like:
apache-tomcat-7.0.23-windows-x86/
apache-tomcat-7.0.23/
bin/
conf/
lib/
logs/
temp/
webapps/
apress/
jsps/
WEB-INF/
web.xml
Classes/
HelloWorldServlet.class
lib/
work/
我将CATALINA_HOME设置为c:\ apache-tomcat-7.0.23-windows-x86 \ apache-tomcat-7.0.23
我以CATALINA_HOME \ bin \ catalina start的形式启动tomcat
日志似乎表明xml文件正常,如下所示:
2012年1月9日,上午12:40:51 org.apache.catalina.startup.HostConfig deployDirectory
信息:部署Web应用程序目录C:\ apache-tomcat-7.0.23-windows-x86 \ apache-tomcat-7.0.23 \ webapps \ apress
INFO:服务器在1017毫秒内启动
在Google chrome中,我输入:
I set CATALINA_HOME to c:\apache-tomcat-7.0.23-windows-x86\apache-tomcat-7.0.23
I start tomcat as CATALINA_HOME\bin\catalina start
The logs seem to suggest that the xml files are ok as it displays:
Jan 09, 2012 12:40:51 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.23-windows-x86\apache-tomcat-7.0.23\webapps\apress
INFO: Server startup in 1017 ms
In Google chrome I type:
http://localhost:8080/apress/hello.html
我在浏览器中得到以下输出:
I get the following output in my browser:
HTTP Status 500 -HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class HelloWorldServlet
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1815)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
root cause
java.lang.ClassNotFoundException: HelloWorldServlet
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1815)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
note注意根本原因的完整堆栈跟踪可在Apache Tomcat/7.0.23日志中找到.
这是日志:
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.
and this is the logs:
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@4ded8e')
Jan 09, 2012 12:40:49 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet helloworld as unavailable
Jan 09, 2012 12:40:49 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet helloworld
java.lang.ClassNotFoundException: HelloWorldServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
任何帮助将不胜感激.
谢谢
阿拉斯泰尔
Any help will be greatly appreciated.
Thanks
Alastair
推荐答案
AbstractConnectionHandler.process(AbstractProtocol.java:539) org.apache.tomcat.util.net.AprEndpoint
AbstractConnectionHandler.process(AbstractProtocol.java:539) org.apache.tomcat.util.net.AprEndpoint
SocketProcessor.run(AprEndpoint.java:1815) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) java.util.concurrent.ThreadPoolExecutor
SocketProcessor.run(AprEndpoint.java:1815) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) java.util.concurrent.ThreadPoolExecutor
Worker.run(ThreadPoolExecutor.java:603) java.lang.Thread.run(Thread.java:722) 根本原因 java.lang.ClassNotFoundException:HelloWorldServlet org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) org.apache.coyote.AbstractProtocol
Worker.run(ThreadPoolExecutor.java:603) java.lang.Thread.run(Thread.java:722) root cause java.lang.ClassNotFoundException: HelloWorldServlet org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) org.apache.coyote.AbstractProtocol
这篇关于严重:为servlet helloworld Apache-Tomcat 7.0.23分配异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!