在编译ServletExp.java程序:
import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletExp extends HttpServlet { public void doGet( HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException { PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body bgcolor = \"white\">"); out.println("Method:"); out.println(request.getMethod() ); out.println("</br>"); out.println("URI: "); out.println(request.getRequestURI()); out.println("</br>"); out.println("Protocol: "); out.println(request.getProtocol()); out.println("</br>"); out.println("RemoteAddr: "); out.println(request.getRemoteAddr()); out.println("</body>"); out.println("</html>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }
出现问题如下:
HelloWorld.java:2: 软件包 javax.servlet 不存在
import javax.servlet.*;
^
HelloWorld.java:3: 软件包 javax.servlet.http 不存在
import javax.servlet.http.*;
^
HelloWorld.java:6: 找不到符号
符号: 类 HttpServlet
public class HelloWorld extends HttpServlet {
^
HelloWorld.java:7: 找不到符号
符号: 类 HttpServletRequest
位置: 类 HelloWorld
public void doGet(HttpServletRequest request, HttpServletResponse response)
^
HelloWorld.java:7: 找不到符号
符号: 类 HttpServletResponse
位置: 类 HelloWorld
public void doGet(HttpServletRequest request, HttpServletResponse response)
^
HelloWorld.java:8: 找不到符号
符号: 类 ServletException
位置: 类 HelloWorld
throws IOException, ServletException
原因是:java编译器没有找到软件包javax.servlet,由于servlet和JSP不是Java平台Java SE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置。
解决:
1、修环境变量CLASSPATH,添加servlet-api.jar的路径如下:
F:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\serblet-api.jar
重启cmd,重新编译
javac ServletExp.java 编译成功。
2、下载或者到安装jboss的目录下,如:“jboss4\server\default\lib”拷贝一个javax.servlet.jar的包到“JDK\jre\lib\ext”目录下,而不是目录“JDK\jre\lib”,也不是“JDK\lib”下。
凡是出现找不到包的情况,都可以将找到的包放到JDK\jre\lib\ext下,然后再编译就能够通过。