【问题标题】:Java method parameter names from a JAR file in EclipseEclipse 中 JAR 文件中的 Java 方法参数名称
【发布时间】:2010-10-03 03:06:20
【问题描述】:

我创建了一个带有 ant 文件的 Java 库,以将其构建到 JAR 中。当我从另一个 Java 项目中使用此 JAR 文件时,方法参数名称显示为 Eclipse 方法提示/自动完成中的:arg0、arg1、arg...

例如,方法:

     void publishStatus(String jobId, int count);

显示为:

     void publishStatus(String arg0, int arg1);

我错过了什么?

谢谢,

编辑

看起来这已经在这里进行了更详细的讨论: Preserving parameter/argument names in compiled java classes

【问题讨论】:

    标签: java eclipse jar


    【解决方案1】:

    Java 方法参数名称不以类文件格式表示。 JVM 规范的相关部分是 4.3.34.6 部分。 (严格来说,它们可以在某些情况下,但它们不能被包含在接口中,除非在编译类时设置了相关的编译器选项,否则它们不会被包含。)

    在实践中,如果 Eclipse 可以找到并解析对应于类文件的源代码,它也可以为您提供方法参数名称。在简单的情况下,您可以通过下载包含相关源代码的 ZIP 文件等并将其附加到二进制 JAR 来解决此问题。

    跟进您的评论:

    我并不是要在 JAR 中包含源文件夹(尽管这显然有效)。如果您查看依赖 JAR 文件的 Eclipse 属性,有一种方法可以附加相应的源 JAR 或目录。 (我现在无法运行 Eclipse 来为您提供准确的详细信息。)无论如何,这种方法不需要您重新编译或以其他方式更改依赖的 JAR。

    【讨论】:

    • 我注意到这里有很多讨论:stackoverflow.com/questions/939194/…
    • ...谢谢!这行得通,我在 JAR 中包含了源文件夹,我现在可以看到类和接口中的所有名称 :)
    【解决方案2】:

    你需要让java编译器在编译类时包含“调试信息”,并重新创建你的jar文件。

    对于 ant,这意味着在 <javac ...> 标记上具有 debug="true" 属性。

    【讨论】:

    猜你喜欢
    • 2011-10-14
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    相关资源
    最近更新 更多