在将Guava从18.0升级到最新的23.5-jre时,我遇到了如下异常
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
at com.van.common.VanExecutors.getSpec(VanExecutors.java:91)
at com.van.common.VanExecutors.newFixedSizeExecutor(VanExecutors.java:114)
at com.van.storage.config.ConfigStoreFactory.getOrCreateUncachedStore(ConfigStoreFactory.java:56)
at com.van.storage.config.ConfigStoreFactory.getOrCreateStore(ConfigStoreFactory.java:74)
at com.van.storage.config.PolicyManager.loadFromSystemProperties(PolicyManager.java:79)
at com.van.tools.metric.HbaseMetricStoreSetup.main(HbaseMetricStoreSetup.java:25)相关代码
private ExecutorSpec getSpec(String executorName) {
Preconditions.checkArgument(isValid(), "Not initialized");
Preconditions.checkArgument(NullOrEmpty.isFalse(executorName), "No executor name given");
Preconditions.checkArgument(POOL_NAME_PATTERN.matcher(executorName).matches(), "Executor name %s must end with -exec", executorName);
for (ExecutorSpec spec : executorsSpec.getExecutorSpecList()) {
if (spec.getName().equalsIgnoreCase(executorName)) return spec;
}
return null;
}根据堆栈跟踪线91是最后的前提检查。
有没有人能告诉我出了什么问题?
发布于 2017-12-25 13:08:03
为了解决这个问题,我在前面加上了CLASSPATH ( export CLASSPATH=<guava-23.5>;$CLASSPATH )和Guava23.5 jre。
发布于 2017-12-20 15:35:52
在我看来,方法isValid()返回一个String (这是不是改变了?)而是一个boolean is expected (并且是在release 18 too。
https://stackoverflow.com/questions/47900817
复制相似问题