2011-12-01 12 views
13

में विधि हस्ताक्षर को समझना मुझे यह अपवाद मिला लेकिन इसे हल किया गया।NoSuchMethod अपवाद

java.lang.NoSuchMethodError: antlr.NoViableAltForCharException.<init> 
(CLjava/lang/String;II)V 

लेकिन मैं जानना चाहते हैं कि संदेशों के इस तरह व्याख्या करने के लिए करना चाहते हैं: "(CLjava/लैंग/स्ट्रिंग; द्वितीय) वी" इसके अलावा, इस "init" NoViableAltForCharException वर्ग के निर्माता का उल्लेख करता है ??

धन्यवाद।

उत्तर

26

हस्ताक्षर टाइप करें - this page से लिया गया।

जेएनआई जावा वीएम के प्रकार हस्ताक्षरों का प्रतिनिधित्व करता है। तालिका 3-2 इन प्रकार के हस्ताक्षर दिखाता है।

Z        boolean 
B        byte 
C        char 
S        short 
I        int 
J        long 
F        float 
D        double 
L fully-qualified-class ;  fully-qualified-class 
[ type       type[] 
(arg-types) ret-type   method type 

उदाहरण के लिए, जावा विधि:

(ILjava/lang/String;[I)J 
7

यह एक निर्माता antlr.NoViableAltForCharException(char, String, int, int) की तलाश में है लेकिन इसे कक्षा में ढूंढने में विफल रहता है।

<init> विधि कन्स्ट्रक्टर है और <cinit> विधि स्थैतिक प्रारंभिक ब्लॉक है। पैरामीटर प्रकार @gkamal द्वारा सूचीबद्ध हैं, इसके अतिरिक्त V शून्य है। उल्लेखनीय रूप से निर्माता void लौटाते हैं जो हस्ताक्षर के अंत में V का कारण है।

Btw: यह शायद विडंबना है कि J लंबे समय के लिए है और L, वर्ग के लिए है जब यह लंबे समय के लिए L और जावा वर्ग के लिए J हो सकती थी। ;)

+1

मुझे विश्वास है कि पोस्टर इसकी व्याख्या कैसे कर रहा है, और वास्तविक व्याख्या नहीं। – gnomed

+0

धन्यवाद पीटर, आप उत्तर विधि हस्ताक्षर और init विधि दोनों में मददगार था। – popcoder

2

types docs देखें। यह एक सुविधाजनक शॉर्टेंड नोटेशन है।

0

आप बनाम तुम क्या कर रहे हैं सर्वर पर एक पुरानी .jar फ़ाइल हो सकता है:

long f (int n, String s, int[] arr); 

निम्न प्रकार के हस्ताक्षर हैं अपने कोड को संकलित करना। डबल चेक करें कि सर्वर पर सभी .jar फ़ाइलें समान हैं जिनके साथ आप संकलित कर रहे हैं।

संबंधित मुद्दे