Как исправить ошибку контрольной точки при отладке в Eclipse?

Необходимо отладить JAR файл "ProA", поэтому импортируйте исходный код в проект, но в Eclipse есть странная ошибка при попытке установить точку останова. Подробнее, как показано ниже:

Unable to install breakpoint due to missing line number attributes.
Modify compiler options to generate line number attributes.

Я попытался решить несколько методов, но не смог.

  • В окне > Предпочтения: Java > Компилятоp > Генерация файлов классов, все параметры должны быть в True
  • В папке .settings вашего проекта найдите файл с именем org.eclipse.jdt.core.prefs. Проверьте или установите org.eclipse.jdt.core.compiler.debug.lineNumber=generate
  • Добавьте флаг debug=true в build.xml, как показано ниже: <javac srcdir="./src/java" destdir="./bin" debug="true">

Любая помощь будет оценена.

Ответ 1

У меня была такая же проблема, но чтение вашего сообщения помогло мне решить мою проблему. Я изменил org.eclipse.jdt.core.prefs следующим образом:

ДО:

eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7

ПОСЛЕ:

eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7

Другой способ изменить эти параметры в проекте > Свойствa > Компилятор Java. Таким образом, нет необходимости вручную изменять файл org.eclipse.jdt.core.prefs. Там вы должны убедиться, что опции Classfile Generation отмечены.

Ответ 2

В JAR атрибуты номера строки отсутствуют в скомпилированном байт-коде. С добавленным исходным кодом Eclipse знает номера строк, , но не Java VM, который выполняет байт-код и не видит исходный код.

Было бы бесполезно, если Eclipse сказал, что виртуальная машина Java остановится на определенной строке, потому что Java VM не знает, какая команда находится в этой строке, и поэтому, когда нужно остановиться.

Единственным решением является воссоздать JAR или, по крайней мере, байт-код (.class файлы) с информацией о строке класса (ов), в который вы хотите установить точка останова.