मैंने एक आवेदन लिखा, यह 3 साल तक ठीक काम कर रहा था, लेकिन! आज जब वे इस आवेदन चलाने का प्रयास, एक अप्रत्याशित अपवाद उठाया:दुर्भाग्यपूर्ण जावा अपवाद: java.lang.NoSuchMethodError
INFO | jvm 1 | 2013/04/17 10:02:40 | Exception in thread "Thread-1" java.lang.NoSuchMethodError: java.sql.Connection.isValid(I)Z
INFO | jvm 1 | 2013/04/17 10:02:40 | at lib.MySQLConnectionPatch.SearchInCache(MySQLConnectionPatch.java:103)
INFO | jvm 1 | 2013/04/17 10:02:40 | at lib.MySQLConnectionPatch.getConnection(MySQLConnectionPatch.java:79)
INFO | jvm 1 | 2013/04/17 10:02:40 | at lib.SQLManager.establishSqlConnection(SQLManager.java:62)
INFO | jvm 1 | 2013/04/17 10:02:40 | at lib.SQLManager.establishSqlConnection(SQLManager.java:30)
INFO | jvm 1 | 2013/04/17 10:02:40 | at lib.tasks.classes.sql.executeQuery.execute(executeQuery.java:49)
INFO | jvm 1 | 2013/04/17 10:02:40 | at Components.TTask.run(TTask.java:86)
INFO | jvm 1 | 2013/04/17 10:02:40 | at Components.ThreadTask.run(ThreadTask.java:29)
INFO | jvm 1 | 2013/04/17 10:02:40 | at lib.tasks.classes.fori.execute(fori.java:66)
INFO | jvm 1 | 2013/04/17 10:02:40 | at Components.TTask.run(TTask.java:86)
INFO | jvm 1 | 2013/04/17 10:02:40 | at Components.ThreadTask.run(ThreadTask.java:29)
INFO | jvm 1 | 2013/04/17 10:02:40 | at lib.tasks.classes.fori.execute(fori.java:66)
INFO | jvm 1 | 2013/04/17 10:02:40 | at Components.TTask.run(TTask.java:86)
INFO | jvm 1 | 2013/04/17 10:02:40 | at Components.ThreadTask.run(ThreadTask.java:29)
INFO | jvm 1 | 2013/04/17 10:02:40 | at Components.ThreadTask.run(ThreadTask.java:44)
INFO | jvm 1 | 2013/04/17 10:02:40 | at LauncherService.LaunchService.run(LaunchService.java:38)
का कोड MySQLConnectionPatch.java/SearchInCache
private Connection SearchInCache(String key) {
Connection result = null;
try{
if (!connections.isEmpty())
result = connections.get(key);
} catch (Exception ex){
}
if (result != null){
boolean isValid = false; /** THIS IS LINE 103 WHERE EXCEPTION RAISED **/
try {
Statement s = result.createStatement();
if (s.execute("SHOW STATUS;")){
isValid = true;
}
s.close();
} catch (Exception ex) {
isValid = false;
}
if (!isValid){
connections.remove(key);
messageLog.stdwar("MySQL_PATCH: ONE CONNECTION EXPIRED :: force close");
try {
result.close();
} catch (SQLException ex) {
messageLog.stderr("MySQL_PATCH: CLOSING CONNECTION ERROR: "+ex.getMessage());
}
result = null;
}
}
return result;
}
है मुझे आश्चर्य है कि क्यों boolean isValid = false;
उठाने के अपवाद java.lang.NoSuchMethodError: java.sql.Connection.isValid(I)Z
।
नोट कि केवल एक चीज अलग है (पूर्व 1.6 था, और नए 1.7 है)
आवेदन 3 साल के लिए ठीक काम कर रहा था और अब दुर्घटनाग्रस्त हो रहा है? कुछ ने कोड/सिस्टम/आश्रित पुस्तकालय – Apurv
बदल दिया होगा क्या आपने MySQL jdbc लाइब्रेरी को बदल दिया है? –
क्या आप सुनिश्चित हैं कि आपका एप्लिकेशन 1.7 का उपयोग कर रहा है और 1.5 नहीं? यह विधि केवल 1.6 के बाद से मौजूद है। –