Los síntomas describen perfectamente el caso cuando la clase encontrada no tiene una fuente asociada (o asignada).
- Puede asociar las fuentes para las clases JDK en Preferencias> Java> JRE instalado . Si se detecta JRE (no JDK) como JRE predeterminado para ser utilizado, entonces sus clases JDK no tendrán fuentes adjuntas. Tenga en cuenta que no todas las clases JDK han proporcionado fuentes, algunas de ellas se distribuyen solo en forma binaria.
- Las clases de la ruta de compilación del proyecto, agregadas manualmente, requieren que adjunte manualmente la fuente asociada. La fuente puede residir en un archivo zip o jar, en el espacio de trabajo o en el sistema de archivos. Eclipse escaneará el zip, por lo que sus fuentes no tienen que estar en la raíz del archivo, por ejemplo.
- Clases, de dependencias provenientes de otros complementos (maven, PDE, etc.). En este caso, depende del complemento cómo se proporcionará la fuente.
- PDE requerirá que cada complemento tenga el paquete XXX.source correspondiente , que contiene la fuente del complemento. Se puede encontrar más información aquí y aquí .
- m2eclipse puede buscar fuentes y javadocs para las dependencias de Maven si están disponibles. Esta característica debe habilitar las preferencias de m2eclipse (la opción se denominó algo así como " Descargar código fuente y javadocs ".
- Para otros complementos, deberá consultar su documentación
- Las clases, que se cargan desde su proyecto, coinciden automáticamente con las fuentes del proyecto.
Pero, ¿qué pasa si Eclipse todavía sugiere que adjunte la fuente, incluso si configuro correctamente mis clases y sus fuentes:
Esto casi siempre significa que Eclipse está encontrando la clase desde un lugar diferente al esperado. Inspeccione su ruta de búsqueda de origen para ver dónde podría obtener la clase incorrecta. Actualice la ruta de acuerdo a sus hallazgos.
Eclipse no encuentra nada en absoluto, cuando se alcanza el punto de interrupción:
Esto sucede cuando la ruta de búsqueda de origen no contiene la clase, que actualmente está cargada en el tiempo de ejecución. Incluso si la clase está en el espacio de trabajo, puede ser invisible para la configuración de inicio, porque Eclipse sigue estrictamente la ruta de búsqueda de origen y solo vincula las dependencias del proyecto, que actualmente está depurado.
Una excepción son los paquetes de depuración en PDE . En este caso, debido a que el tiempo de ejecución se compone de múltiples proyectos, que no tienen que declarar dependencias entre sí, Eclipse encontrará automáticamente la clase en el espacio de trabajo, incluso si no está disponible en la ruta de búsqueda de origen.
No puedo ver las variables cuando alcanzo un punto de interrupción o simplemente abre la fuente, pero no selecciona la línea del punto de interrupción:
Esto significa que en el tiempo de ejecución, la JVM o las clases mismas no tienen la información de depuración necesaria. Cada vez que se compilan las clases, se puede adjuntar información de depuración. Para reducir el espacio de almacenamiento de las clases, a veces se omite esta información, lo que dificulta la depuración de dicho código. Su única oportunidad es intentar recompilar con la depuración habilitada.
El visor de origen de Eclipse muestra líneas diferentes a las que realmente se ejecutan:
A veces puede mostrar que el espacio vacío también se ejecuta. Esto significa que sus fuentes no coinciden con su versión en tiempo de ejecución de las clases. Incluso si cree que esto no es posible, lo es, así que asegúrese de configurar las fuentes correctas. O su tiempo de ejecución coincide con sus últimos cambios, dependiendo de lo que intente hacer.