我创建了一个带有 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 方法参数名称不以类文件格式表示。 JVM 规范的相关部分是部分 4.3.3和 4.6 . (严格来说,它们在某些情况下可以,但它们不能被包含在接口(interface)中,除非在编译类时设置了相关的编译器选项,否则不会被包含。)
在实践中,如果Eclipse 可以找到并解析类文件对应的源代码,它也可以为您提供方法参数名称。在简单的情况下,您可以通过下载包含相关源代码的 ZIP 文件等并将其附加到二进制 JAR 来解决此问题。
跟进您的评论:
我并不是想在 JAR 中包含源文件夹(尽管这显然有效)。如果查看从属 JAR 文件的 Eclipse 属性,可以找到附加相应源 JAR 或目录的方法。 (我现在无法运行 Eclipse 来为您提供准确的详细信息。)无论如何,这种方法不需要您重新编译或以其他方式更改依赖的 JAR。
关于Eclipse 中 JAR 文件中的 Java 方法参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848395/