Recibo este extraño error en Eclipse al intentar establecer un punto de interrupción.
Unable to insert breakpoint Absent Line Number Information
Marqué la casilla de verificación de las opciones del compilador pero no tuve suerte.
eclipse
debugging
breakpoints
chandrajeet
fuente
fuente
Respuestas:
Recibí el mismo mensaje de error en Eclipse 3.4.1, SUN JVM1.6.0_07 conectado a Tomcat 6.0 (ejecutándose en modo de depuración en una máquina diferente, Sun JVM1.6.0_16, la conexión de depuración funcionó correctamente).
Ventana -> Preferencias -> Java -> Compilador -> Generación de archivos de clase: se verificó "agregar atributos de número de línea al archivo de clase generado" . Hice una limpieza, recompilar. Lo desmarqué, volví a compilar, verifiqué, volví a compilar. Me aseguré de que el proyecto usara la configuración global. Sigue siendo el mismo mensaje.
Cambié a Ant Build, usando
Aún así, el mismo mensaje.
No descubrí qué causó este mensaje y por qué no desaparecería. Aunque parecía tener algo que ver con la sesión de depuración de Tomcat en ejecución: cuando se desconecta, la recompilación resuelve el problema. Pero al conectar el depurador a Tomcat o al establecer nuevos puntos de interrupción durante una sesión de depuración conectada, apareció nuevamente.
Sin embargo, resultó que el mensaje era incorrecto : pude depurar y establecer puntos de interrupción, tanto antes como durante la depuración ( javap -l también mostró números de línea). Así que ignóralo :)
fuente
debug="true"
a lajavac
tarea delant
script de construcción funcionó.fuente
Esto solucionó mi problema:
fuente
Installed JREs
defecto es enJDK
lugar deJRE
Para problemas relacionados con Spring , considere que en algunos casos genera clases "sin números de línea"; por ejemplo, una
@Service
clase anotada sin una interfaz, agregue la interfaz y puede depurarla. ver aquí para un ejemplo completo.El servicio anterior tendrá una interfaz generada por resorte que causa "números de línea faltantes". Agregar una interfaz real resuelve el problema de generación:
fuente
Tengo la respuesta a este problema desde el lado del SDK de BlackBerry: por alguna razón, no importa cuántas veces haya cambiado las opciones en el compilador, el archivo de configuración subyacente real no cambió.
Busque en la carpeta .settings de su proyecto un archivo llamado org.eclipse.jdt.core.prefs .
Allí puede modificar la configuración manualmente:
editar: Además de esto, he notado que a veces puedo ignorar la alerta que Eclipse da, y aún se detendrá en el lugar requerido ... curioser y curioser ... Puse esto en el cubo de cosas con las que aprendemos a lidiar cuando trabajas como dev.
fuente
Esto funcionó para mí:
Window --> Preferences --> Java --> Compiler --> Classfile Generation
, todas las opciones tienen que serTrue
.debug="true"
en la<javac>
tarea build.xml .Debug
modofuente
No sé si esto sigue siendo relevante, quizás otro marinero lo encuentre útil.
El mensaje aparece cuando uno tiene un archivo de clase compilado, las banderas de depuración desactivadas.
En eclipse, puede activarlo mediante las opciones mencionadas anteriormente,
Ventana -> Preferencias -> Java -> Compilador -> Generación de archivos de clase: "agregar atributos de número de línea al archivo de clase generado"
Pero si tiene un archivo jar, obtendrá el resultado compilado. No hay una manera fácil de solucionar este problema.
Si tiene acceso a la fuente y usa ant para obtener el archivo jar, puede modificar la tarea ant de la siguiente manera.
Feliz depuración ..
ref: http://doc.sumy.ua/prog/Java/javanut/ch16_04.htm
fuente
Probé casi todas las soluciones aquí y no tuve suerte. ¿Intentaste hacer clic en "No me digas otra vez"? Después de hacerlo, reinicié mi programa y todo estuvo bien. Eclipse alcanzó mi punto de ruptura como si nada estuviera mal.
La causa principal para mí fue que Eclipse estaba tratando de configurar la depuración para los objetos proxy Spring CGLIB generados automáticamente. A menos que necesite depurar algo a ese nivel, debe ignorar el problema.
fuente
Sería útil si indicara la versión de eclipse que está utilizando y la tecnología (Java JDT, o AJDT para Aspect Java, o C ++ CDT, por ejemplo), solo para estar seguro.
En el lado de Java, supongo que su "Marcó la casilla de verificación de las opciones del compilador" se refiere a esto
En "
Window --> Preferences --> Java --> Compiler --> Classfile Generation
", todas lasClass file
opciones de generación están establecidas en Verdadero:¿Tiene su proyecto los marcados solo a nivel global (Preferencias de Windows) o a nivel específico del proyecto?
¿Y está seguro de que la clase se abrió (en la que intenta establecer un punto de interrupción):
.java
, no un.class
?Intenta limpiar todo y reconstruir todo, verifica posibles conflictos de jarras .
fuente
Tuve este problema al intentar iniciar Tomcat en modo de depuración desde Eclipse. Tenía un archivo de compilación ANT que se encargaba de la compilación y la implementación. Después de establecer el indicador de depuración en verdadero (como se menciona en otras respuestas) y volver a implementar la aplicación, funcionó bien:
NOTA: si acaba de agregar el indicador de depuración y volver a compilar, aún necesita volver a implementar su aplicación en el servidor, ya que aquí es donde Eclipse está depurando los archivos de clase. Muy obvio pero fácil pasar una hora rascándote la cabeza y preguntándote por qué no funciona (confía en mí).
fuente
intente cambiar el
jre
que usa. Establezca eljre
en la carpeta de en suJDK
lugar.fuente
Dado que tengo 6 versiones diferentes de Java instaladas, tuve que cambiar mi cumplimiento de JDK predeterminado para que coincida con el de la versión de Java que quería usar. Eclipse por defecto tenía el nivel de cumplimiento del compilador establecido en Java 1.7 cuando todo fue compilado / compilado usando Java 1.6.
Entonces todo lo que hice fue
¡Ahora Eclipse ya no se queja de "No se puede insertar la información de número de línea ausente del punto de interrupción" y los puntos de interrupción de depuración realmente funcionan!
fuente
Si nada más funciona, abra la perspectiva de depuración, borre todos los puntos de interrupción existentes y luego vuelva a configurarlos.
fuente
Esto se explica en detalle aquí:
https://github.com/spring-projects/spring-ide/issues/78
Solo para referencia futura, esta es la parte relevante de la respuesta (ignore el hecho que se refiere a una aplicación Spring Boot, el comportamiento es el mismo para muchos otros casos):
fuente
Mi situación fue similar:
spyTask = spy(new Task())
Task.java
)Este punto de interrupción genera el error en cuestión, cada vez que ejecuto
Debug As... > JUnit Test
Para abordar el problema, moví el punto de interrupción 'arriba' a la prueba real (dentro de TaskTest.java). Una vez que se detuvo la ejecución, agregué el punto de interrupción donde lo tenía, originalmente (dentro de Task.java).
Todavía recibí el mismo error, pero después de hacer clic en "ok", el punto de interrupción funcionó bien.
Espero que ayude a alguien,
-mujer
fuente
Tuve el mismo problema cuando hice en el servidor de embarcadero y compilé un nuevo archivo .war por ANT. Debería hacer la misma versión del compilador jdk / jre y la ruta de compilación (por ejemplo, jdk 1.6v33, jdk 1.7, ....) después de tener que configurar el compilador de Java como se escribió anteriormente.
Hice todo y aún no funcionaba. La solución fue eliminar los archivos compilados .class y el objetivo del archivo de guerra generado y ahora funciona :)
fuente
Recibí este mensaje con Spring AOP (parece provenir de la biblioteca CGLIB). Al hacer clic en Ignorar parece funcionar bien, todavía puedo depurar.
fuente
Encontré otra razón más para este mensaje. Estaba programando Scala. La solución fue:
Ahora la depuración debería funcionar. Tenga en cuenta que he instalado el complemento Scala IDE, es posible que esta opción no esté disponible si no la tiene.
fuente
Por encima de las cosas no funcionó para mí. A continuación, las soluciones finalmente funcionaron. Configuraciones de depuración -> Classpath -> Entradas de usuario -> (Agregue la carpeta src del proyecto que desea depurar).
fuente
Tuve este mismo problema al depurar un WAR (construido a partir de múltiples artefactos del proyecto Eclipse) implementado en Tomcat.
Estoy construyendo todo usando un script de compilación ANT. Si esto es lo que está haciendo, asegúrese de que el indicador debug = true esté configurado en cada tarea de javac ant que tenga. Este fue mi único problema, ¡espero que ayude a tu problema!
fuente
Tuve el mismo error con JBoss 7.1 .. E hice lo mismo que Zefiro. Simplemente ignoré el error y pude colocar puntos de interrupción normalmente. En mi caso, estaba construyendo el generador de hormigas pensadas y esta es mi tarea de Java:
fuente
Tuve el mismo problema, pasé mucho tiempo buscando una solución, pero estas soluciones son inútiles, así que estudio todos los casos, finalmente descubrí que hay un conflicto entre las versiones de JDK. A continuación se detallan los pasos para resolver el problema: 1. Elimine todas las versiones JDK y JRE, conserve solo una versión. 2. Establecer el sistema JAVA_HOME y el compilador de Java en Eclipse es el mismo. En algunos casos, el error anterior no desaparecerá, pero podremos ejecutarlo en el modelo de depuración.
fuente
Una vez que experimenté el mismo error cuando usé junit y Mockito, olvidé agregar
@PrepareForTest
una clase estática.Agregar el código a continuación solucionó mi problema.
No estoy seguro de que fuera el mismo caso.
fuente
Mi problema era que tenía 2 JAR e intentaba anular uno con el otro en función de su orden en el
Java Build Path => Order & Export
pestaña en Eclipse, porque uno era para depurar y el otro no (el JAR de depuración era el primero en el orden). Cuando lo hice de esta manera, tuve que adjuntar manualmente una fuente.Intenté eliminar el JAR que no es de depuración y colocar el JAR de depuración en mi directorio \ WEB-INF \ lib \, limpieza, construcción, etc., y funcionó. Esta vez (habiendo eliminado la fuente adjunta), automáticamente me permitiría navegar a través del código de depuración, sin tener que adjuntar ninguna fuente manualmente. Los puntos de interrupción y la depuración también funcionaron.
En caso de que alguien todavía tenga problemas, también probé todas estas soluciones particulares mencionadas en las otras respuestas:
Add line number attributes...
org.eclipse.jdt.core.prefs
como se menciona en otra respuesta: https://stackoverflow.com/a/31588700/1599699También hice el apagado habitual del servidor (y me aseguré de que java.exe esté realmente cerrado ...), eliminando los directorios \ build \ en ambos proyectos, reiniciando Eclipse con el parámetro -clean, recreando el JAR de depuración, refrescando, limpieza y compilación del proyecto con el JAR de depuración en él, iniciando el servidor en modo de depuración, publicación / limpieza y puntos de corte.
fuente
Hice todo lo que se enumeró anteriormente mientras compilaba / construía los frascos, aún tenía el mismo problema.
Finalmente, los cambios de jvmarg enumerados a continuación al iniciar el servidor es lo que finalmente funcionó para mí:
1) Se eliminó / comentó un grupo de argumentos jvm relacionados con javaagent y bootclasspath.
2) Encendió / descomentó la siguiente línea:
Luego, cuando inicio el servidor, puedo alcanzar mis puntos de interrupción. Sospecho que el javaagent estaba de alguna manera interfiriendo con la capacidad de Eclipse para detectar números de línea.
fuente
Verifique / haga lo siguiente:
1) En "Ventana -> Preferencias -> Java -> Compilador -> Generación de archivos de clase", todas las opciones deben ser True:
2) En la carpeta .settings de su proyecto, busque un archivo llamado org.eclipse.jdt.core.prefs. Verifique o establezca org.eclipse.jdt.core.compiler.debug.lineNumber = generate
3) Si todavía aparece la ventana de error, haga clic en la casilla de verificación para no mostrar el mensaje de error.
4) Limpiar y construir el proyecto. Comience a depurar.
Normalmente, la ventana de error ya no se muestra y la información de depuración se muestra correctamente.
fuente
Me encontré con este problema también. Estoy usando un script de construcción de hormigas. Estoy trabajando en una aplicación heredada, así que estoy usando jdk versión 1.4.2. Esto solía funcionar, así que comencé a mirar alrededor. Noté que bajo la configuración de Depuración en la pestaña JRE, la versión de Java se había configurado en 1.7. Una vez que lo cambié a 1.4 funcionó.
Espero que esto ayude.
fuente
Estaba tratando de depurar el administrador de registro y necesitaba cambiar el jre a un jdk y luego seleccionar este jdk en la pestaña "principal", "Java Runtime Environment" | "tiempo de ejecución JRE" de la configuración de depuración, entonces todo estaba bien.
fuente
Vi este problema cuando anoté una clase con @ManagedBean (javax.annotation.ManagedBean). El mensaje de advertencia apareció al ejecutar la aplicación recién cumplida en JBoss EAP 6.2.0. Ignorarlo y correr de todos modos no ayudó: el punto de interrupción nunca se alcanzó.
Estaba llamando a ese bean usando EL en una página JSF. Ahora ... es posible que @ManagedBean no sea bueno para eso (soy nuevo en CDI). Cuando cambié mi anotación a @Model, mi bean se ejecutó pero la advertencia del punto de interrupción también desapareció y llegué al punto de interrupción como se esperaba.
En resumen, ciertamente parecía que la anotación @ManagedBean estropeaba los números de las líneas, independientemente de si era una anotación incorrecta o no.
fuente
Asegúrese de que el proyecto en el que se encuentra la clase principal del tiempo de ejecución es el mismo proyecto en el que está la clase en la que tiene puntos de interrupción . De lo contrario, asegúrese de que ambos proyectos estén en el classpath de la configuración de ejecución y que aparezcan antes de cualquier jarra y carpeta de clase.
fuente