Java yorumlama.lang.NoSuchMethodError mesaj
Aşağıdaki çalışma zamanı hata iletisini (94 satırı gösteren bir yığın izleme ilk satırı ile birlikte). Böyle bir yöntem var diyor nedenini anlamaya çalışıyorum.
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 çizgi 94 aşağıda gösterilmiştir.
SORU
Ne demek" ya da "Z"? İLcom
Neden parantez içinde dört çeşit
(İLcom/güneş/javadoc/ClassDoc;/güneş/javadoc/MemberDoc Lcom;Ljava/lang/String;Z)
ve parantez sonra bir
Ljava/lang/String;
yöntem printDocLinkForMenu açıkça beş parametre vardır?
KOD DETAY
WriteSummaryLink yöntemi
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);
}
İşte 94 arıyor yöntem satır:
public void printDocLinkForMenu(int context, ClassDoc classDoc, MemberDoc doc,
String label, boolean strong) {
String docLink = getDocLink(context, classDoc, doc, label, strong);
print(deleteParameterAnchors(docLink));
}
CEVAP
JVM Spec section 4.3.2:
Character Type Interpretation ------------------------------------------ B byte signed byte C char Unicode character D double double-precision floating-point value F float single-precision floating-point value I int integer J long long integer L<classname>; reference an instance of class S short signed short Z boolean true or false [ reference one array dimension
section 4.3.3, Method descriptors:
Yöntem tanımlayıcı yöntem gereken parametreleri ve döndürdüğü değeri temsil eder:
MethodDescriptor:
( ParameterDescriptor* ) ReturnDescriptor
Böylece
(ILcom/sun/javadoc/ClassDoc;Lcom/sun/javadoc/MemberDoc;Ljava/lang/String;Z) Ljava/lang/String;
çeviren:
10*, ClassDoc
, , * MemberDoc
String
boolean
String
bir döndüren parametreleri, ve gibi bir yöntem. Sadece referans parametreleri noktalı virgül karakterini temsillerine bir parçası olduğu için noktalı virgül ile ayrılmış olduğunu unutmayın.
Yani, özetlemek gerekirse,
Neden orada dört çeşit ayraç (İLcom/güneş/javadoc/ClassDoc;Lcom/güneş/javadoc/MemberDoc;Ljava/lang/String;Z) ve sonra parantez Ljava/lang/String; zaman yöntemi printDocLinkForMenu açıkça beş parametreleri?
Beş parametreleri (int, ClassDoc, MemberDoc, String, boolean ve bir dönüş türü (Dize) vardır.
'java neden olur.lang.NoSuchMetho...
İle " uğraşan;java.lang.OutOfMemor...
Hata java.lang.OutOfMemoryError: GC ov...
Nasıl başa "java.lang.OutOfMemory...
java.lang.OutOfMemoryError: GC overhea...