Java字節碼(Java bytecode)

轉自http://www.importnew.com/1486.html

爲了保證WORA,JVM使用Java字節碼這種介於Java和機器語言之間的中間語言。字節碼是部署Java代碼的最小單位。

在解釋Java字節碼之前,我們先通過實例來簡單瞭解它。這個案例是一個在開發環境出現的真實案例的總結。

 

現象

一個一直運行正常的應用突然無法運行了。在類庫被更新之後,返回下面的錯誤

Exception in thread "main" java.lang.NoSuchMethodError: com.nhn.user.UserAdmin.addUser(Ljava/lang/String;)V
    at com.nhn.service.UserService.add(UserService.java:14)
    at com.nhn.service.UserService.main(UserService.java:19)

應用的代碼如下,而且它沒有被改動過。

// UserService.java
…
public void add(String userName) {
    admin.addUser(userName);
}
更新後的類庫的源代碼和原始的代碼如下。

// UserAdmin.java - Updated library source code
…
public User addUser(String userName) {
    User user = new User(userName);
    User prevUser = userMap.put(userName, user);
    return prevUser;
}
// UserAdmin.java - Original library source code
…
public void addUser(String userName) {
    User user = new User(userName);
    userMap.put(userName, user);
}

沒有整理完

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章