Javassist:getFileName返回null

Javassist:getFileName返回null,java,ant,javassist,Java,Ant,Javassist,当我用Ant编译我的项目时,javassist的MethodCall类的getFileName方法返回null,但当我用javac逐个文件编译它时,它返回调用该方法的文件。为什么会这样 以下是我的build.xml: <?xml version="1.0" encoding="UTF-8"?> <project name="Tracer" default="jar" basedir="."> <target name="init" description="

当我用Ant编译我的项目时,javassist的MethodCall类的getFileName方法返回null,但当我用javac逐个文件编译它时,它返回调用该方法的文件。为什么会这样

以下是我的build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Tracer" default="jar" basedir=".">
    <target name="init" description="Creates the directory where the compiled classes will be stored">
        <mkdir dir="classes" />
    </target>
    <target name="compile" description="Compiles the classes" depends="init">
        <javac srcdir="src" destdir="classes" includeantruntime="false">
            <classpath>
                <fileset dir="lib">
                    <include name="**/*.jar" />
                </fileset>
            </classpath>
        </javac>
    </target>
    <target name="jar" depends="compile" description="Creates the project jar">
        <jar destfile="tracer.jar" basedir="classes">
            <fileset dir="src" includes="**/*.java" />
            <zipgroupfileset dir="lib" includes="**/*.jar" />
        </jar>
    </target>
    <target name="clean" description="Deletes the compiled classes">
        <delete dir="classes" />
        <delete file="tracer.jar" />
    </target>
    <target name="test" description="Target for building in Travis-CI" depends="compile" />
</project>
发现问题了

为了让javassist获得文件名和行号,它需要启用调试信息,而ant默认情况下不启用它


因此,解决方案是在ant中启用调试信息。

您比较过jar吗?当我使用javac时,我没有创建jar,但ant创建的jar在编译后包含与文件系统相同的内容。这就是您的问题。Javassist无法在不知道jar的情况下定位该类。那么我应该如何定位?我已经尝试将jar添加到javassist ClassPool.appendClassPath的类路径中,但没有解决问题。。你能和我分享一下如何在ant中启用调试标志吗。