需要调试JAR文件"ProA",所以在项目中导入源代码,但是在试图设置断点时,Eclipse中出现了一个奇怪的错误。详情如下:
Unable to install breakpoint due to missing line number attributes.
Modify compiler options to generate line number attributes.
我试过几种方法来解决,但都失败了。
- 在窗口>首选项:Java>编译器>类文件生成下,所有选项都必须为True
- 在项目的
.settings
文件夹中,查找名为org.eclipse.jdt.core.prefs
的文件。验证或设置org.eclipse.jdt.core.compiler.debug.lineNumber=generate
- 在
build.xml
中添加debug=true
标志,如下所示:<javac srcdir="./src/java" destdir="./bin" debug="true">
任何帮助都将不胜感激。
我也遇到过同样的问题,但阅读你的帖子帮助我解决了我的问题。我更改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
在"项目">"属性">"Java编译器"中修改这些选项的另一种方法。因此,无需手动修改org.eclipse.jdt.core.prefs
文件。在那里,您需要确保选中Classfile Generation选项。
在JAR中,已编译的字节码中缺少行号属性。添加源代码后,Eclipse知道行号,但不知道执行字节码且看不到源代码的Java VM。
如果Eclipse告诉Java虚拟机在特定行停止,那将是无用的,因为Java虚拟机不知道哪个命令在哪行,也不知道何时停止。
唯一的解决方案是使用要设置断点的类的行信息重新创建JAR或至少字节码(.class
文件)。