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

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...");
}

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.

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

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.

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

sds

j.silvestre

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…