我得到了這個異常但解決了它。瞭解NoSuchMethod異常中的方法簽名
java.lang.NoSuchMethodError: antlr.NoViableAltForCharException.<init>
(CLjava/lang/String;II)V
,但我想知道如何解釋這些類型的消息:「(CLjava /朗/字符串; II)V」 此外,沒有這個「初始化」提NoViableAltForCharException類的構造函數?
謝謝。
我得到了這個異常但解決了它。瞭解NoSuchMethod異常中的方法簽名
java.lang.NoSuchMethodError: antlr.NoViableAltForCharException.<init>
(CLjava/lang/String;II)V
,但我想知道如何解釋這些類型的消息:「(CLjava /朗/字符串; II)V」 此外,沒有這個「初始化」提NoViableAltForCharException類的構造函數?
謝謝。
類型簽名 - 取自this page。
JNI使用Java VM的類型簽名表示。表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
例如,Java方法:
long f (int n, String s, int[] arr);
具有以下類型簽名:
(ILjava/lang/String;[I)J
它正在尋找構造函數antlr.NoViableAltForCharException(char, String, int, int)
,但無法在類中找到它。
<init>
方法是構造函數,<cinit>
方法是靜態初始化塊。參數類型由@gkamal列出,其中V
爲無效。理論上構造函數返回void
,這是在簽名末尾V
的原因。
BTW:這也許具有諷刺意味的是J
長期和L
是一流的,當它本來L
長期和J
的Java類。 ;)
查看types docs。這是一個方便的速記符號。
你可以在服務器上VS你在做什麼過時的.jar文件用你的代碼編譯。 仔細檢查服務器上的所有.jar文件是否與您正在編譯的文件相同。
我相信海報正在尋找如何解釋它,而不是實際的解釋。 – gnomed
感謝Peter,你的回答在方法簽名和init方法中都很有幫助。 – popcoder