Problemas acessar uma classe de outro pacote dentro de um JSP

4 respostas
cristianonasciment

<%@ page language="java" contentType="text/html" import="meupacote.SendMail" pageEncoding="ISO-8859-1" %> .... <% if(request.getParameter("submit")!=null){ SendMail sm = new SendMail(); sm.sendMail("[email removido]","[email removido]","Email automatico","chaaaaaaama"); } %> ....
erro:

C:\projetos\agenda\EnviandoEmailGmail\build\generated\src\org\apache\jsp\email_jsp.java:67: SendMail() is not public in meupacote.SendMail; cannot be accessed from outside package SendMail sm = new SendMail(); ^ 1 error
A classe SendMail é pública e está dentro do pacote meupacote, e está falando q não pode ser acessado por q não é publica. pq ?

4 Respostas

edilson_x

Cara assim fica muito difícil, se o compilador esta dizendo que não é publica é porque não é.

posta a classe ai.

malves_info

Conselho… segue um padrão de projeto…não mistura teu codigo java com jsp… da uma olhada em servlets, struts fica mais facil de tu da manutenção no codigo… reaproveitar…

[]'s

cristianonasciment

SendMail.java

package meupacote;

 import java.util.Properties;  
 import javax.mail.Message;  
 import javax.mail.Session;  
 import javax.mail.Transport;  
 import javax.mail.internet.InternetAddress;  
 import javax.mail.internet.MimeMessage;   
 import javax.mail.Authenticator;  
 import javax.mail.PasswordAuthentication; 
 
 
public class SendMail {
    private String mailSMTPServer;  
       private String mailSMTPServerPort;  
         
       /* 
        * quando instanciar um Objeto ja sera atribuido o servidor SMTP do GMAIL  
        * e a porta usada por ele 
        */  
       SendMail() { //Para o GMAIL   
           mailSMTPServer = "smtp.gmail.com";  
           mailSMTPServerPort = "465";  
       }  
       /* 
        * caso queira mudar o servidor e a porta, so enviar para o contrutor 
        * os valor como string 
        */  
       /*SendMail(String mailSMTPServer, String mailSMTPServerPort) { //Para outro Servidor  
           this.mailSMTPServer = mailSMTPServer;  
           this.mailSMTPServerPort = mailSMTPServerPort;  
       }  */
         
       public void sendMail(String from, String to, String subject, String message) {  
             
           Properties props = new Properties();  
     
           props.put("mail.transport.protocol", "smtp"); //define protocolo de envio como SMTP  
           props.put("mail.smtp.starttls.enable","true");   
           props.put("mail.smtp.host", mailSMTPServer); //server SMTP do GMAIL  
           props.put("mail.smtp.auth", "true"); //ativa autenticacao  
           props.put("mail.smtp.user", from); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)  
           props.put("mail.debug", "true");  
           props.put("mail.smtp.port", mailSMTPServerPort); //porta  
           props.put("mail.smtp.socketFactory.port", mailSMTPServerPort); //mesma porta para o socket  
           props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
           props.put("mail.smtp.socketFactory.fallback", "false");  
             
           //Cria um autenticador que sera usado a seguir  
           SimpleAuth auth = null;  
           auth = new SimpleAuth ("[email removido]","140948");  
             
           //Session - objeto que ira realizar a conexão com o servidor  
           /*Como há necessidade de autenticação é criada uma autenticacao que 
            * é responsavel por solicitar e retornar o usuário e senha para  
            * autenticação */  
           Session session = Session.getDefaultInstance(props, auth);  
           session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email  
     
           //Objeto que contém a mensagem  
           Message msg = new MimeMessage(session);  
     
           try {  
               //Setando o destinatário  
               msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));  
               //Setando a origem do email  
               msg.setFrom(new InternetAddress(from));  
               //Setando o assunto  
               msg.setSubject(subject);  
               //Setando o conteúdo/corpo do email  
               msg.setContent(message,"text/plain");  
     
           } catch (Exception e) {  
               System.out.println(">> Erro: Completar Mensagem");  
               e.printStackTrace();  
           }  
             
           //Objeto encarregado de enviar os dados para o email  
           Transport tr;  
           try {  
               tr = session.getTransport("smtp"); //define smtp para transporte  
               /* 
                *  1 - define o servidor smtp 
                *  2 - seu nome de usuario do gmail 
                *  3 - sua senha do gmail 
                */  
               tr.connect(mailSMTPServer, "[email removido]", "140948");  
               msg.saveChanges(); // don't forget this  
               //envio da mensagem  
               tr.sendMessage(msg, msg.getAllRecipients());  
               tr.close();  
           } catch (Exception e) {  
               // TODO Auto-generated catch block  
               System.out.println(">> Erro: Envio Mensagem");  
               e.printStackTrace();  
           }  
     
       }  
   }  
  class SimpleAuth extends Authenticator {  
      public String username = null;  
      public String password = null;  
    
    
      public SimpleAuth(String user, String pwd) {  
          username = user;  
          password = pwd;  
      }  
    
      protected PasswordAuthentication getPasswordAuthentication() {  
          return new PasswordAuthentication (username,password);  
      }  
}
elvisleyaraujo

Coloque seu construtor como público

na linha 21 coloque

public SendMail() { //Para o GMAIL     
            mailSMTPServer = "smtp.gmail.com";    
            mailSMTPServerPort = "465";    
        }
Criado 17 de maio de 2008
Ultima resposta 22 de ago. de 2009
Respostas 4
Participantes 4