在 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>

我将debug行和debuglevel行添加到上述调用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 应用程序中有"收缩资源真"和"缩小启用真">

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

最新更新