我在我的类路径中加载了一个 jar (在 iReport 中,如果重要的话),我确信它具有所需的方法,但是当我尝试测试连接,从而调用该 jar 时,我得到一个 java.lang.NoSuchMethodError ,说它正在引用班上
Lorg/springframework/web/context/WebApplicationContext
我不确定这是否与问题有关,但是开头的“L”是从哪里来的?另一次,我在引用一门课程时,课程后面有一个“V”。这些字母从何而来,它们的含义是什么?
堆栈跟踪的开始:
java.lang.NoSuchMethodError:
org.springframework.web.context.ContextLoader
.getCurrentWebApplicationContext()Lorg/springframework/web/context/WebApplicationContext;
Java 使用这些字母在内部对方法签名进行编码。例如,“L”声明后面的“对象”,该对象由其完整类名指定,后跟分号。 “V”前面应该有括号,并描述“void”的返回类型。
拿你的例子来说:
java.lang.NoSuchMethodError:
org.springframework.web.context.ContextLoader
.getCurrentWebApplicationContext()Lorg/springframework/web/context/WebApplicationContext;
它说,类中没有方法org.springframework.web.context.ContextLoader
called getCurrentWebApplicationContext
不接受任何参数[表示为()
] 并返回一个对象(由L
)称为“org/springframework/web/context/WebApplicationContext”(以“;”结束)。
EDIT:所有代码的列表在表 3.2 中JNI 规范 http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/types.html#wp276.
EDIT2:更权威:部分4.3 描述符 http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#1169JVM 规范包含完整的格式和代码参考。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)