【问题标题】:Line number info not available error while debugging Ant project in IntelliJ在 IntelliJ 中调试 Ant 项目时行号信息不可用错误
【发布时间】:2018-04-20 04:58:32
【问题描述】:

我正在处理一个相当老的 Java Ant 项目,该项目已导入 IntelliJ,它之前是使用 Eclipse 开发的。该项目由少量 servlet 组成。我正在尝试从 IntelliJ 进行调试。 IntelliJ 可以连接到端口 8000 上的远程 Tomcat,但是当我尝试添加断点时,我收到以下可怕的错误:

com.package.blah.SomeClass 类中没有行号信息

根据关于 SO 和其他地方的建议,我将我的 Ant 构建脚本修改为以下内容:

<target name="compile" depends="web-skeleton">
    <ant dir="${deployment-wizard.dir}" target="uberjar"/>
    <javac debug="true" debuglevel="lines,vars,source" srcdir="${src.dir}"
        destdir="${build.dir}/WEB-INF/classes" classpathref="project.class.path"/>
</target>

我将debugdebuglevel 行添加到上述调用javac 的目标中。另外,我尝试运行javap -v SomeClass.class,我看到如下内容:

  line 94: 418
  line 97: 433
  line 98: 443
LocalVariableTable:
  Start  Length  Slot  Name   Signature
    343      22    13 decrypted   Ljava/lang/String;
    370      11    13     e   Ljava/lang/Exception;
    244     189     7 keyParam   Ljava/lang/String;
    255     178     8 userParam   Ljava/lang/String;
    266     167     9 environmentParam   Ljava/lang/String;

我不知道这是否意味着字节码包含行号,但它肯定是这样出现的。

我还尝试从头开始清理和重建,并从 IntelliJ 执行无效缓存/重新启动。

我希望有人可以在这里提供一些帮助。作为最后的手段,我可​​以尝试将其移植到 Maven 项目中,但除非绝对必要,否则我宁愿避免这样做。

【问题讨论】:

  • 添加调试选项后,您是否尝试过清理/重建项目?
  • 是的,我已经超越了这一点,甚至在 IntelliJ 中进行了无效缓存、清理、重新启动。我放弃了...我花了一个下午将它移植到一个 Maven 项目,该项目现在使用断点运行 :-)
  • 我强调了我的案例中缺少的属性。很容易被忽视。在编译目标中添加调试和调试级别后,问题得到解决。谢谢。

标签: java intellij-idea ant breakpoints bytecode


【解决方案1】:

同样的事情发生在我身上,这是因为我在 Gradle 应用程序中有“shrinkResources true”和“minifyEnabled true”

构建类型 { 调试{ 收缩资源假 缩小启用假 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }

【讨论】:

    猜你喜欢
    • 2010-12-05
    • 2015-03-10
    • 2016-06-22
    • 2021-07-24
    • 2015-01-27
    • 2019-06-20
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多