一尘不染

为什么将“ L”添加到我的Java路径中?

java

我在我的类路径(如果重要的话,在iReport中)中加载了一个jar,可以肯定它具有所需的方法,但是当我尝试测试连接时,因此调用了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;

阅读 366

收藏
2020-12-03

共1个答案

一尘不染

Java使用这些字母在内部对方法签名进行编码。例如,“ L”表示后面的“ Object”,该“ Object”由其完整类名指定,后跟一个分号。“
V”应以括号开头,并描述“ void”的返回类型。

举个例子:

java.lang.NoSuchMethodError:
org.springframework.web.context.ContextLoader
.getCurrentWebApplicationContext()Lorg / springframework / web / context /
WebApplicationContext;

它说,有在类中没有方法org.springframework.web.context.ContextLoader称为getCurrentWebApplicationContext不接受任何参数[记()]并返回一个对象(通过宣布L称为`组织/
springframework的/网络/上下文/ WebApplicationContext的)(通过关闭“;”)。

编辑:
所有代码的列表在JNI规范的表3.2中。

编辑2:
更具权威性:4.3节JVM规范的描述符包含格式和代码的完整参考。

2020-12-03