2011-12-01 16 views
13

Mam ten wyjątek, ale go rozwiązałem.Opis metody podpisu w wyjątku NoSuchMethod

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

Ale chciałbym wiedzieć, jak interpretować te rodzaje wiadomości: "(CLjava/lang/String; II) V" także, czy ten "init" wspomnieć konstruktora klasy NoViableAltForCharException ??

Dzięki.

Odpowiedz

26

Podpisy typu - pobierane z this page.

JNI używa reprezentacji typów maszyn wirtualnych maszyn wirtualnych. Tabela 3-2 pokazuje te typy podpisów.

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 

Na przykład, metoda Java:

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

posiada następujące rodzaje Podpis:

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

Poszukuje konstruktora antlr.NoViableAltForCharException(char, String, int, int), ale nie może go znaleźć w klasie.

Metoda <init> jest konstruktorem, a metoda <cinit> jest statycznym blokiem inicjalizacyjnym. Typy parametrów są wymienione przez @gkamal z dodatkiem, że V jest nieważny. Notatkowo konstruktorzy zwracają void, co jest powodem, dla którego V znajduje się na końcu podpisu.

BTW: To może paradoksalne, że J jest za długi i L jest do klasy, kiedy to mogło być L dla długich i J dla klasy Java. ;)

+1

Uważam, że plakat szuka sposobu interpretacji, a nie samej interpretacji. – gnomed

+0

Dzięki Peter, odpowiedź była pomocna zarówno w metodzie podpisu, jak i metody init. – popcoder

0

Mogłeś przestarzałej plik .jar na serwerze vs co masz kompilowanie kodu za pomocą. Sprawdź, czy wszystkie pliki .jar na serwerze są takie same, jak te, z którymi kompilujesz.

Powiązane problemy