【问题标题】:Some function parameters named arg0, arg1, etc... after compiling a JAR library一些函数参数命名为 arg0、arg1 等...编译 JAR 库后
【发布时间】:2013-09-01 07:54:55
【问题描述】:

我好像遇到过一个问题,Ant编译一个Jar库后,有些函数参数是arg0、arg1等……而不是真实姓名。有问题的函数都属于库中的一个内部接口。

我正在使用 Ant 命令编译一个库:

ant clean release -Dversion.code=1 -Dverbose=true -Ddebug=true -Ddebuglevel="vars"

鉴于此,由于某种原因,部分方法会丢失其参数名称,而其他方法会保留其参数名称。即:

Func a(String specificName1) 变成 a(String arg0)

同时

Func b(String specificName2) 变成 b(String specificName2)

问题如下: 该库内部有一个内部接口类。 为什么接口函数获取名为 arg0、arg1 等的参数,而其他方法保持正确的参数名称?


我正在开发一个 Android 库,我正在 Eclipse IDE 上测试库 jar。

编译本身是在Androids自己的ant build.xml中编辑的:

        <javac encoding="${java.encoding}"
                source="${java.source}" target="${java.target}"
                debug="true" debuglevel="vars" extdirs="" includeantruntime="false"
                destdir="${out.classes.absolute.dir}"
                bootclasspathref="project.target.class.path"
                verbose="${verbose}"
                classpathref="project.javac.classpath"
                fork="${need.javac.fork}">
            <src path="${source.absolute.dir}" />
            <src path="${gen.absolute.dir}" />
            <compilerarg line="${java.compilerargs}" />
        </javac>

【问题讨论】:

  • 请贴出build.xml文件,我们需要看看javac的参数
  • 问题是? (永远不要认为它是显而易见的)

标签: java android ant parameters


【解决方案1】:

好的,终于找到答案了,希望对大家有所帮助:

简短的故事是: 参数名称可以从 javadoc、外部源文件或类本身中提取。新的一点是,当试图从类本身获取参数名称信息时,接口类不能像普通类一样保留它们的参数名称(根据 Oracle 的 Java 规范手册)。

这实际上在我之前没有找到的其他帖子中得到了回答:

Java method parameter names from a JAR file in Eclipse

这也支持没有办法解决这个问题:

Preserving parameter/argument names in compiled java classes

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 2014-01-03
    • 2021-04-24
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多