我正在编写一个 Java Web 应用程序并放入 Tomcat 中运行。
当我尝试使用 JAR 中包含的方法时(我确信它包含我需要的方法),它显示:
java.lang.NoSuchMethodError: com.couchbase.client.CouchbaseClient.asyncGetBulk(Ljava/util/Collection;)Ljava
但是我尝试通过启动tomcat -verbose:class
,我看到以下日志:
[Loaded net.spy.memcached.ops.VBucketAware from file:/.../apache-tomcat-5.5.30/webapps/.../WEB-INF/lib/spymemcached-2.8.2.jar]
[Loaded net.spy.memcached.protocol.binary.SingleKeyOperationImpl from file:/.../apache-tomcat-5.5.30/webapps/.../WEB-INF/lib/spymemcached-2.8.2.jar]
[Loaded net.spy.memcached.protocol.binary.GetOperationImpl from file:/.../apache-tomcat-5.5.30/webapps/.../WEB-INF/lib/spymemcached-2.8.2.jar]
Exception in thread "Thread-2139" java.lang.NoSuchMethodError: com.couchbase.client.CouchbaseClient.asyncGetBulk(Ljava/util/Collection;)Ljava/util/concurrent/Future
虽然 spymemcached-2.8.2.jar 包含该方法,所以我不明白为什么它会失败。
这就是我调用该方法的方式:
Future<Map<String,Object>> f = client.asyncGetBulk(key);
谢谢你的帮助。
更新1:
通过使用@Narendra Pathai 提供的代码,我得到了以下结果
[
file:/.../WEB-INF/classes/,
file:/.../WEB-INF/lib/activation-1.1.jar,
file:/.../WEB-INF/lib/commons-codec-1.5.jar,
file:/.../WEB-INF/lib/commons-lang-2.2.jar,
file:/.../WEB-INF/lib/commons-logging-1.1.1.jar,
file:/.../WEB-INF/lib/couchbase-client-1.0.3.jar,
file:/.../WEB-INF/lib/jaxb-api-2.1.jar,
file:/.../WEB-INF/lib/jaxb-impl-2.1.9.jar,
file:/.../WEB-INF/lib/jettison-1.1.jar,
file:/.../WEB-INF/lib/netty-3.2.0.Final.jar,
file:/.../WEB-INF/lib/runtime-0.4.1.5.jar,
file:/.../WEB-INF/lib/spymemcached-2.8.2.jar,
file:/.../WEB-INF/lib/stax-api-1.0-2.jar,
file:/.../WEB-INF/lib/xxx_core.jar,
file:/.../WEB-INF/lib/xxx_couchbase.jar
]
它们不包含具有com.couchbase.client.CouchbaseClient.asyncGetBulk
除 couchbase-client-1.0.3.jar 之外的路径的文件。
更新 2:
通过使用代码:
CodeSource codeSource = CouchbaseClient.class.getProtectionDomain().getCodeSource();
if (codeSource != null) {
log.debug(codeSource.getLocation());
}
CodeSource codeSource2 = net.spy.memcached.MemcachedClient.class.getProtectionDomain().getCodeSource();
if (codeSource2 != null) {
log.debug(codeSource2.getLocation());
}
我得到了以下结果:
file:/.../WEB-INF/lib/couchbase-client-1.0.3.jar
file:/.../WEB-INF/lib/spymemcached-2.8.2.jar
看来他们也是正确的。