Javassist:getFileName返回null
当我用Ant编译我的项目时,javassist的MethodCall类的getFileName方法返回null,但当我用javac逐个文件编译它时,它返回调用该方法的文件。为什么会这样 以下是我的build.xml: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="
<?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中启用调试标志吗。