首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >解释java.lang.NoSuchMethodError消息

解释java.lang.NoSuchMethodError消息
EN

Stack Overflow用户
提问于 2018-03-27 05:28:09
回答 2查看 0关注 0票数 0

我收到以下运行时错误消息(以及第一行堆栈跟踪,它指向94行)。我试图找出为什么它说没有这样的方法存在。

代码语言:javascript
复制
java.lang.NoSuchMethodError: 
com.sun.tools.doclets.formats.html.SubWriterHolderWriter.printDocLinkForMenu(
    ILcom/sun/javadoc/ClassDoc;Lcom/sun/javadoc/MemberDoc;
    Ljava/lang/String;Z)Ljava/lang/String;
at com.sun.tools.doclets.formats.html.AbstractExecutableMemberWriter.writeSummaryLink(
    AbstractExecutableMemberWriter.java:94)

writeSummaryLink的第94行如下所示。

问题 “ILcom”或“Z”是什么意思? 为什么括号中有四种类型(ILcom / sun / javadoc / ClassDoc; Lcom / sun / javadoc / MemberDoc; Ljava / lang / String; Z)和括号Ljava / lang / String后面的一个; 当printDocLinkForMenu方法显然有五个参数?

代码详细信息 writeSummaryLink方法是:

代码语言:javascript
复制
protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
    ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
    String name = emd.name();
    writer.strong();
    writer.printDocLinkForMenu(context, cd, (MemberDoc) emd, name, false);  // 94
    writer.strongEnd();
    writer.displayLength = name.length();
    writeParameters(emd, false);
}

以下是方法行94正在调用:

代码语言:javascript
复制
public void printDocLinkForMenu(int context, ClassDoc classDoc, MemberDoc doc,
        String label, boolean strong) {
    String docLink = getDocLink(context, classDoc, doc, label, strong);
    print(deleteParameterAnchors(docLink));
}
EN

Stack Overflow用户

发布于 2018-03-27 13:46:22

从JVM规范的第4.3.2节

代码语言:javascript
复制
字符类型解释
------------------------------------------
B字节有符号字节
C char Unicode字符
D双精度浮点值
F浮点单精度浮点值
我int整数
J长整型
→<类名>; 引用一个类的实例
S短签名空头
Z布尔值true或false
[引用一个数组维度

第4.3.3节,方法描述符

方法描述符表示该方法需要的参数及其返回的值:

代码语言:javascript
复制
MethodDescriptor:
        ( ParameterDescriptor* ) ReturnDescriptor

从而,

(ILcom/sun/javadoc/ClassDoc;Lcom/sun/javadoc/MemberDoc;Ljava/lang/String;Z) Ljava/lang/String;

转化为:

用的方法intClassDocMemberDocStringboolean作为参数,并且返回一个String。请注意,只有引用参数以分号分隔,因为分号是其字符表示的一部分。

所以,总结一下:

为什么括号中有四种类型(ILcom / sun / javadoc / ClassDoc; Lcom / sun / javadoc / MemberDoc; Ljava / lang / String; Z)和括号Ljava / lang / String后面的一个; 当printDocLinkForMenu方法显然有五个参数?

有五个参数(int,ClassDoc,MemberDoc,String,boolean)和一个返回类型(String)。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档