Os sintomas descrevem perfeitamente o caso em que a classe encontrada não tem uma fonte associada (ou atribuída).
- É possível associar as origens das classes JDK em Preferências> Java> JRE instalado . Se o JRE (não o JDK) for detectado como o JRE padrão a ser usado, suas classes do JDK não terão fontes anexadas. Observe que nem todas as classes do JDK forneceram fontes, algumas delas são distribuídas apenas na forma binária.
- Classes do caminho de construção do projeto, adicionadas manualmente, requerem que você anexe manualmente a fonte associada. A fonte pode residir em um arquivo zip ou jar, na área de trabalho ou no sistema de arquivos. O Eclipse fará a varredura do zip, para que suas fontes não precisem estar na raiz do arquivo morto, por exemplo.
- Classes, de dependências provenientes de outros plugins (maven, PDE, etc.). Nesse caso, cabe ao plug-in como a fonte será fornecida.
- O PDE exigirá que cada plug-in tenha o pacote XXX.source correspondente , que contém a fonte do plug-in. Mais informações podem ser encontradas aqui e aqui .
- O m2eclipse pode buscar fontes e javadocs para dependências do Maven, se estiverem disponíveis. Esse recurso deve estar ativado nas preferências do m2eclipse (a opção foi denominada algo como " Download source and javadocs ".
- Para outros plugins, você precisará consultar a documentação deles
- As classes carregadas do seu projeto são correspondidas automaticamente com as fontes do projeto.
Mas e se o Eclipse ainda sugerir que você anexe a fonte, mesmo se eu definir corretamente minhas classes e suas fontes:
Isso quase sempre significa que o Eclipse está encontrando a classe de um lugar diferente do que você espera. Inspecione seu caminho de pesquisa de origem para ver onde ele pode obter a classe errada. Atualize o caminho de acordo com suas descobertas.
O Eclipse não encontra nada quando o ponto de interrupção é atingido:
Isso acontece quando o caminho de pesquisa de origem não contém a classe, que está carregada no momento no tempo de execução. Mesmo se a classe estiver na área de trabalho, ela poderá ficar invisível para a configuração de inicialização, porque o Eclipse segue o caminho de pesquisa de origem estritamente e anexa apenas as dependências do projeto, que está atualmente depurado.
Uma exceção são os pacotes de depuração no PDE . Nesse caso, como o tempo de execução é composto de vários projetos, que não precisam declarar dependências um do outro, o Eclipse encontrará automaticamente a classe na área de trabalho, mesmo que não esteja disponível no caminho de pesquisa de origem.
Não consigo ver as variáveis quando atingi um ponto de interrupção ou ele apenas abre a fonte, mas não seleciona a linha do ponto de interrupção:
Isso significa que, no tempo de execução, a JVM ou as próprias classes não possuem as informações de depuração necessárias. Cada vez que as classes são compiladas, as informações de depuração podem ser anexadas. Para reduzir o espaço de armazenamento das classes, algumas vezes essas informações são omitidas, o que torna a depuração desse código um problema. Sua única chance é tentar recompilar com a depuração ativada.
O visualizador de origem do Eclipse mostra linhas diferentes daquelas que são realmente executadas:
Às vezes, pode mostrar que o espaço vazio também é executado. Isso significa que suas fontes não correspondem à sua versão de tempo de execução das classes. Mesmo se você acha que isso não é possível, é verdade, portanto, certifique-se de configurar as fontes corretas. Ou seu tempo de execução corresponde às alterações mais recentes, dependendo do que você está tentando fazer.