Problema para compilar servlet

Saudações, estou com problemas para compilar um servlet, segue informações que podem ser úteis:

  1. Dentro de C:TomcatwebappschatWEB-INFclasses tenho duas packages: chat e servlet
  2. Dentro de chat tenho duas classes: Usuario e UsuarioChat
  3. O código de Usuario é:
package chat;
import java.io.IOException;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public abstract interface Usuario {
   
    /* Pega o nome do usuário */
    public String getNome();
   
    /* Verifica se o usuário está conectado */
    public boolean estaConectado();
   
    /* Verifica se o usuário está ativo */
     public void checaSessao();
    
   /* Desconecta o usuário */
     public void desconecta();
    
   /* Pega resposta */
     public HttpServletResponse getResposta();
 
   /* Seta resposta */
     public void setResposta(HttpServletResponse resposta);
    
   /* Pega a sessão */
     public HttpServletRequest getSessao();
 
   /* Seta a sessão */
     public void setSessao(HttpServletRequest sessao);
    
   /* Pilha de Mensagens
    * Adiciona mensagem na pilha */ 
     public void adicionaMsg(Mensagem msg);
  
     // Espera uma nova mensagem e pega mensagem da pilha
     public Mensagem getNovaMensagem();
    
     // Mostra a mensagem na tela
     public void mostraMensagem(Mensagem msg) throws IOException;
  
     public void addLog(String log);

    /**
     * @param string
     * @param string2
     */
    public void addLog(String string, String string2);
}

e UsuarioChat:

package chat;
import java.io.IOException;
import java.util.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public abstract class UsuarioChat extends HttpServlet implements Usuario, Sala{

     String nome = null;
    private HttpServletResponse resp = null;
    private HttpServletRequest req = null;
    private boolean conectado = true;
    /* Lista de Mensagens */
    private ArrayList mensagens = new ArrayList();
    /* Lista de Usuários*/
    private  Hashtable listaUsuarios = new Hashtable();
    private ArrayList logs = new ArrayList();
   
   
    public UsuarioChat(String nome){
        this.nome = nome;
        if (getPorNome(getNome())!= null){
            throw new IllegalArgumentException("Usuário Inválido");
            // 'getPorNome' retorna o usuário pelo nome
        }else{
            addUsuario(this);
            // Adiciona o usuário a lista de logados
        }
     }
   
    public String getNome(){
        return nome;
    }
    public HttpServletResponse getResposta(){
        return resp;
    }
   
    public void setResposta (HttpServletResponse res){
        this.resp = res;
    }
   
    public HttpServletRequest getSessao(){
        return req;
    }
   
    public void setSessao(HttpServletRequest requ){
        this.req = requ;
    }
   
    /* Verifica se o usuário ainda está conectado */
    public boolean estaConectado(){
        return conectado;
    }
    /* Desconecta o usuario e já altera o status */
    public void desconectar(){
        conectado = false;
    }
   
    /* Verifica se a sessão está ativa e se
     * o usuário ainda se encontra nela */
    public void checaSessao(){
        try {
          if (getSessao().getSession() == null ||
               getSessao().getSession().getAttribute("usuario")== null){
              this.desconectar();
          }           
        }catch(IllegalStateException isex){
            this.desconectar();           
        }
    }
   
    /* Métodos que lidam com as mensagens
     * Método que adiciona mensagem e avisa a todos */
      public void adicionaMsg(Mensagem msg){
          mensagens.add(msg);
          synchronized (mensagens){
              // Sinaliza para quem está esperando
              mensagens.notifyAll();
          }
      }
     /* Verifica se já existe uma mensagem, se já existir,
     *  devolve ela mesma. */
      public synchronized Mensagem getNovaMensagem(){
          if (mensagens.isEmpty()){
              try{
                  synchronized (mensagens){
                      /* Tempo que espera para ver se o usuario
                       * ainda está na sala*/
                      mensagens.wait(5 * 1000); // 5 segundos
                  }
                 
              }catch(InterruptedException e){
                  /* Caso usuário não esteja na sala,
                   * ele deve ser desconectado*/
                  // Desconecta
                  this.desconectar();
                  return(null);              
              }
              // Caso o tempo acabou
              if (mensagens.isEmpty()){
                  return (null);
              }
          }
          return (Mensagem) (mensagens.remove(0));
      }
     
      // Adiciona um usuário a lista
      public void addUsuario(Usuario usuario){
           synchronized (listaUsuarios){
               listaUsuarios.put(usuario.getNome(),usuario);
           }
      }
      // Remover usuário da lista
      public   void remUsuario(Usuario usuario) throws IOException{
          // Verifica se o usuário ainda está na sala
          synchronized(listaUsuarios){
          // Se não está
              if(!listaUsuarios.containsValue(usuario)){
                  return;
              }
          // Remove
              listaUsuarios.remove(usuario.getNome());
          // Desconecta
              usuario.desconecta();
          // Notifica a saída
              Mensagem msg = new UsaMensagem(usuario,
                                 " saíu da sala" +
                                 "<script>removeUsuario('" +
                                 usuario.getNome() +
                                 "');</script>");
               enviaMensagem(msg);
              synchronized (usuario){
                  usuario.notifyAll();
              }
          }
      }
     
      // Retorna usuário pelo nome
      public Usuario getPorNome(String nome){
        return (Usuario) listaUsuarios.get(nome);
      }
     
      // Retorna lista com todos os usuários da sala
      public   Hashtable getUsuarios(){
        synchronized (listaUsuarios){
          return (new Hashtable(listaUsuarios));
        }
      }
     
      /* Envio das mensagens
        * Pode ser de duas maneiras */
       public  void enviaMensagem(Mensagem msg) throws IOException{
        // I) Para um destinatário especifico
        if (msg != null && msg.getPara() != null) {
          msg.getPara().adicionaMsg(msg);
          msg.getDe().adicionaMsg(msg);
          return;
        }
        // II) Para todos da sala
        Hashtable todos = getUsuarios();
        Iterator i = todos.keySet().iterator();
        while (i.hasNext()){
          String nomeUsuario = (String) i.next();
          Usuario usuario = ((Usuario) todos.get(nomeUsuario));
          try{
              usuario.adicionaMsg(msg);
          }
          catch(Exception e){
            e.printStackTrace();
            remUsuario(usuario);
          }
        }
      }

       UsuarioChat enviaMensagem;

    public void desconecta() {
        // TODO Auto-generated method stub
       
    }

    /* (non-Javadoc)
     * @see chat.Usuario#mostraMensagem(chat.Mensagem)
     */
    public void mostraMensagem(Mensagem msg) throws IOException {
        // TODO Auto-generated method stub
       
    }
   
    /** adiciona um texto no log do usuario */
    public void addLog(String log) {
        if (logs.size() == 100) {
            logs.remove(0);
        }
        logs.add(log + "
");
    }  
}

Todos compilando corretamente.
4) Dentro da package servlet tenho uma Servlet chamada Login com o código:

package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Login extends HttpServlet {
   
    // Tempo de sessão: 10 minutos
    final private static int tempoDeSessao = 10 * 60;
   
    protected void doGet(
            final HttpServletRequest req,
            final HttpServletResponse res)
            throws ServletException, IOException{
        res.setContentType("text/html");
        res.getWriter().println("<html><header><meta HTTP-EQUIV="Pragma" " +
                                "CONTENT="no-cache"></header><body>");
        res.getWriter().println("Login para o chat: " +
                                  "<form action="" +
                                  this.getClass().getName() +
        "" method=post><input name=login><input type=submit" +
        " value=Login></form></html>");
    }
    /* O método POST checa a viabilidade de criar um usuário
     * e o cria */
        protected void doPost(final HttpServletRequest req,
                final HttpServletResponse res)
        throws ServletException, IOException{
//          Seta o tipo de conteúdo
            res.setContentType("text/html");
        // Se já existe uma sessão, invalida ela
            if (req.getSession() != null
                && req.getSession().getAttribute("user") != null) {
                    req.getSession().invalidate();
            }
            try{
                // Cria um usuário
                Usuario usuario = new UsuarioChat(req.getParameter("login"));
                req.getSession().setAttribute("user", usuario);
               
                // Tempo Limite
                req.getSession().setMaxInactiveInterval(tempoDeSessao);
            }catch(IllegalArgumentException iaex){
                // se já existe um usuário, mostra pagina de login novamente
                res.getWriter().println("<html><header><meta HTTP-EQUIV="Pragma" CONTENT="no-cache"></header><body>");
                res.getWriter().println(
                        ""
                            + "
	Ja existe um usuario com esse login:<br>"
                            + "
	<form action="
                            + this.getClass().getName()
                            + " method=post>"
                            + "
		<input name=login>"
                            + "
		<input type=submit value=Login>"
                            + "
	</form>"
                            + "
</html>");
                return;
             }
           
            // Mostra os dois frames
            res.getWriter().print(
                    "<html>
"
                    + "	<frameset rows=*,100>
"
                    + "		<frame name="text" src=""
                    + this.getClass().getPackage().getName()
                    + ".Sala">
"
                    + "		<frame name="form" src=""
                    + this.getClass().getPackage().getName()
                    + ".Form">
"
                    + "	</frameset>
"
                    + "</html>");
            return;
      
        } }
  1. Tento compilar Login usando:
    C:j2sdk1.4.1_01injavac.exe -classpath C:Tomcatcommonlibservlet-api.jar

Mas retorna os erros:

C:TomcatwebappschatWEB-INFclassesservletLogin.java:42: cannot resolve symbol
symbol : class Usuario
location: class servlet.Login
Usuario usuario = new UsuarioChat(req.getParameter(“login”));
^
C:TomcatwebappschatWEB-INFclassesservletLogin.java:42: cannot resolve symbol
symbol : class UsuarioChat
location: class servlet.Login
Usuario usuario = new UsuarioChat(req.getParameter(“login”));
^
Alguém sabe qual o problema? Se precisar de mais informações, me comunique!

Obrigado!

no seu servlet vc tem que colocar

 import chat.Usuario; 

Rodrigo veja:

C:TomcatwebappschatWEB-INFclassesservletLogin.java:9: package chat does not exist
import chat.Usuario;
^
C:TomcatwebappschatWEB-INFclassesservletLogin.java:42: cannot resolve symbol
symbol : class Usuario
location: class servlet.Login
Usuario usuario = new UsuarioChat(req.getParameter(“login”));
^
C:TomcatwebappschatWEB-INFclassesservletLogin.java:42: cannot resolve symbol
symbol : class UsuarioChat
location: class servlet.Login
Usuario usuario = new UsuarioChat(req.getParameter(“login”));
^
3 errors
Normal Termination
Output completed (14 sec consumed).

Não seria porque você definiu seu UsuarioChat como abstract !?

Assim, vc não pode instanciá-lo com new UsuarioChat(…)

:twisted: