2017-12-20 4 views
0

bekommen Guava auf die neueste 23.5-jre von 18.0 Bei der Aktualisierung ich unterAuf Guava ein Upgrade auf die neueste 23,5 NoSuchMethodError für Preconditions.checkArgument

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) 

der entsprechende Code

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; 
    } 

als eine Ausnahme, wie ich immer pro StackTrace-Zeile 91 ist der letzte Pre-Conditions-Check.

Kann mir jemand sagen, was schief läuft?

+1

https://stackoverflow.com/questions/45247193/nosuchmethoderror-com-google-common-base-preconditions-checkargumentzljava-lan –

+0

Wie bei der Frage verknüpft. „Sie haben mehrere Versionen von Guava auf Ihrem Classpath Herauszufinden Welche Ihrer Abhängigkeiten hängen von Guava ab und stellen sicher, dass nur eine Version übrig bleibt. Du kompilierst gegen die neue Version, die die Methode hat, aber führe sie mit einer älteren aus, die nicht funktioniert (vor 20.0 gab es nur eine Varargs-Überladung). – maaartinus

+0

@maaartinus Können Sie mich wissen lassen, wie kann ich das feststellen? Ich habe 'mvn dependency: tree' gemacht, aber es meldet an allen Orten die neuesten '23.5-jre'. – tuk

Antwort

0

Um dieses Problem zu beheben, habe ich CLASSPATH (export CLASSPATH=<guava-23.5>;$CLASSPATH) mit Guava 23.5 jre vorangestellt.

0

Mir scheint, dass das Verfahren isValid() ein String zurückgibt (wurde dies geändert?), Sondern ein booleanis expected (und war in release 18 too).

+0

Ich habe die Fragen bearbeitet. Die letzte Vorbedingungsprüfung wirft den Fehler auf. – tuk

Verwandte Themen