当前位置: 技术问答>java相关
我这个例子怎么不能编译呢?高分求解200
来源: 互联网 发布时间:2015-03-23
本文导语: 文件名com.onjava.login.java 是不是路径的问题,可是我已经看了程序员大本里面的专题了,应该没有问题的 还是使用了其他的类,是不是其他类找不到???? package com.onjava; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import...
文件名com.onjava.login.java
是不是路径的问题,可是我已经看了程序员大本里面的专题了,应该没有问题的
还是使用了其他的类,是不是其他类找不到????
package com.onjava;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class login extends HttpServlet {
private String target = "/welcome.jsp";
private String getUser(String username, String password) {
// Just return a static name
// If this was reality, we would perform a SQL lookup
return "Bob";
}
public void init(ServletConfig config)
throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// If it is a get request forward to doPost()
doPost(request, response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Get the username from the request
String username = request.getParameter("username");
// Get the password from the request
String password = request.getParameter("password");
String user = getUser(username, password);
// Add the fake user to the request
request.setAttribute("USER", user);
// Forward the request to the target named
ServletContext context = getServletContext();
RequestDispatcher dispatcher =
context.getRequestDispatcher(target);
dispatcher.forward(request, response);
}
public void destroy() {
}
}
|
没有问题,就是你的包servlet.jar的路径不对,你在编译时用javac -classpath d:jdk130libservlet.jar -d . login.java指定那个包的绝对路径,里面的d:jdk130lib用你自己的绝对路径代替。
|
对于servlet的编译与一般的application是不一样的,因为jdk不包含servlet.jar文件。
所以你要把servlet.jar放入classpath中。
但是我强烈建议不要这样!!!!!!!
因为作为java开发人员,哪个机器上不是安装一大堆环境,而classpath是全局的,谁知道哪天出了什么事影响到其它程序的,是吧?
所以我认为这样:
如果你是用ultraEdit,可以写一个build.bat文件,
内容包括:
set _classpath=%classpath%
set classpath = d:/servlet.jar
....
javac %1 %2
set classpath = %_classpath%
这样做,在编译完后又恢复了原来的classpath
如果你是用JCreator or JBuilder等IDE工具,就更方便了,在project中加入相应的包即可。
在projects 的属性设置中都有required libariy 的设置。你可以摸索一下。
不管如何,原理都一样,你把servlet.jar作为扩展包放入classpath,只是影响的范围不一样而已。
如果上面的回答对你有帮助,请给点分吧:)
|
没有问题,解决同上。/classpath 设置
|
文件名改为login.java就ok了