1
調用此代碼:雖然java.lang.NoSuchMethodError拋出的直接調用,該方法可以通過反射
Boolean isSecure = configInstance.isSecure();
失敗,此錯誤:
java.lang.NoSuchMethodError: org.Config.isSecure()Z
,但是,我可以調用在調試模式下通過反射也是一樣的。
org.Config.class.getMethod("isSecure").invoke(configInstance);
這是方法簽名:
public Boolean isSecure();
一些背景:這是一個bean類的一部分。此前,此方法返回布爾基元類型。但是,我想捕獲未設置bean字段值的場景。我在這裏做錯了什麼?編號1:
下面是一個示例代碼。我在使用JDK 1.8.0_60的Mac上。
try {
isSecure = (Boolean) configInstance.getClass().getMethod("isSecure").invoke(configInstance);
log.info("isSecure " + isSecure); // prints true
isSecure = configInstance.isSecure(); // error NoSuchMethodError
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
log.error(e.getMessage(), e);
}
'布爾isSecure = configInstance.isSecure();' 編譯沒有任何錯誤? – Uata
聽起來像某些東西沒有編譯,沒有足夠的信息來診斷這一點。 – john16384
當然它是編譯好的。 –