在IntelliJ中调试Ant项目时,行号信息不可用错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在IntelliJ中调试Ant项目时,行号信息不可用错误相关的知识,希望对你有一定的参考价值。

我正在使用一个相当古老的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项目中,但除非绝对必要,否则我宁愿避免这种情况。

答案

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

buildTypes {debug {shrinkResources false minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'}

以上是关于在IntelliJ中调试Ant项目时,行号信息不可用错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IntelliJ 中永久启用行号?

如何使用 Ant 构建 Android 项目? (IntelliJ IDE)

无法在 Intellij 中调试 android 应用程序:“警告:调试信息可能不可用。”

GAE项目Intellij远程调试在关闭时不释放端口

Intellij调试debug

GCC:如何只生成行号调试信息?