gpt4 book ai didi

java - 不幸的 Java 异常 : java. lang.NoSuchMethodError

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:40 25 4
gpt4 key购买 nike

我写了一个应用程序,它可以正常工作 3 年,但是!今天,当他们尝试运行此应用程序时,引发了意外异常:

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

注意唯一不同的是JRE(以前是1.6,新的是1.7)

最佳答案

奇怪。它显然引用了 isValid(int) java.sql.Connection

中的方法

在您的堆栈跟踪中,我还看到了一个 I 和一个 Z:java.sql.Connection.isValid(I)Z

它们对应于 int (I) 和 boolean (Z),它们是 java.sql.Conneciton 中方法的确切签名。所以肯定是调用了一个方法。注意:括号右边的字符表示方法的返回类型,本方法返回 boolean 值(Z)。

以下是我能想到的唯一想法:

  1. 您提供的源代码与您环境中实际运行的代码不符。 (例如,也许你的“补丁”是从来没有真正申请过?)

  2. 此外,您的环境可能正在运行 Java 5,因为 isValid(int) 方法直到 Java 6 才出现。

关于java - 不幸的 Java 异常 : java. lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16053280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com