Funciona no eclipse, mas quando crio o runnable jar file não funciona como deveria

5 respostas
J

Estou com um problema que não consegui encontrar a solução em lugar nenhum…
Desenvolvi uma aplicação para ler os xml das nf-e que chegam em um determinado e-mail e salvar em uma pasta. Quando executo a aplicação pelo eclipse ela funciona perfeitamente e baixa todos os e-mails, mas quando executo o código compilado ele baixa apenas as mensagens que são instancia da classe Multipart, não baixando as que são instancia da classe BASE64DecoderStream. No código abaixo a parte que verifica se a mensagem é instancia de BASE64DecoderStream dá sempre falso, quando rodo no eclipse da verdadeiro.

Alguém faz ideia do que pode estar acontecendo?

Segue o método que baixa os e-mails

public void lerMail() {
	
	System.out.println("iniciou...");
	
	try {	
		if (store == null)
			connect();
		
		inbox = store.getFolder("Inbox");
		inbox.open(Folder.READ_WRITE);
		
		messages = inbox.getMessages();
		
		System.out.println("Mensagens: " + messages.length);
		
		for (int msgIndex = 0; msgIndex < messages.length; msgIndex++) {
			
			message = messages[msgIndex];
			
			System.out.println((msgIndex + 1) + " - Titulo: " + message.getSubject());
			System.out.print("Leu: ");
			
			try {
				messageObject = message.getContent();
			
				if (messageObject instanceof Multipart) {
					
					multipart = (Multipart) message.getContent();
					
					for (int multipartIndex = 0; multipartIndex < multipart.getCount(); multipartIndex++) {
						
						part = multipart.getBodyPart(multipartIndex);
						
						if (part.getFileName() != null && part.getFileName().toLowerCase().contains(".xml")) {
							salvarArquivo(part, trataString(part.getFileName()));
							System.out.print("sim");
						}
						
						if (part.getFileName() != null && part.getFileName().toLowerCase().contains(".zip")) {
							salvarArquivoZip(part, trataString(part.getFileName()));
							System.out.print("sim");
						}
					}
				} else if (messageObject instanceof BASE64DecoderStream) {
					BASE64DecoderStream base = (BASE64DecoderStream) message.getContent();
					salvarArquivo(base, trataString(message.getFileName()));
					System.out.print("sim");
				} else {
					System.out.print(messageObject.getClass().getCanonicalName());
				}
				
			} catch (IOException e) {
				System.out.print("erro");
			}
			System.out.println("");
		}

		inbox.close(true);

		disconnect();
	
	} catch (MessagingException e) {
		store = null;
		session = null;
	}
	
	System.out.println("terminou...");
}

5 Respostas

vitordarela

Provavelmente você cometeu algum erro na copilação do projeto, você compilou usando o ANT? veja se incluiu na copilação todas as classes do seu pacote.

J

Compilei pelo eclipse mesmo, File->Export->Runanble Jar File. Está errado compilar assim?

vitordarela

não esta errado, mas existe várias formas de compilar um projeto. Você na hora de selecionar as Classes você selecionou todas?? sugiro que você compile seu projeto novamente checando com detalhes na hora de escolher o projeto e suas classes, acredito que você deixou alguma coisa para trás.

j.silvestre

Julio o vitordarela esta certo, vc deixou algum package sem compilar. Isso já aconteceu comigo.

sds

j.silvestre

J

E muito estranho o que está acontecendo… Conferi tudo e não ficou faltando nada pra compilar. O sistema roda sem nenhum erro, mas não baixa todas as mensagens, baixa apenas as que são instancia da classe Multipart. Quando rodo no eclipse baixa todas…

Criado 21 de fevereiro de 2013
Ultima resposta 21 de fev. de 2013
Respostas 5
Participantes 3