1
嘗試向Guice注入構造函數時出現一個非常奇怪的錯誤。有一個在構造函數中,如下一個特定的行:奇怪的Guice注入錯誤
@Inject
public RoundRobinAssigner(
... arguments
) {
...stuff
assignments = Sets.synchronizedNavigableSet(Sets.<CountingEntry<String>>newTreeSet());
}
這種失敗在注射以下。
1) Error injecting constructor, java.lang.NoSuchMethodError: com.google.common.collect.Sets.synchronizedNavigableSet(Ljava/util/NavigableSet;)Ljava/util/NavigableSet;
at edu.harvard.econcs.turkserver.util.RoundRobinAssigner.<init>(RoundRobinAssigner.java:46)
at edu.harvard.econcs.turkserver.util.RoundRobinAssigner.class(RoundRobinAssigner.java:40)
while locating edu.harvard.econcs.turkserver.util.RoundRobinAssigner
但是,如果我刪除Sets.synchronizedNavigableSet()
包裝,東西注入就好了。
@Inject
public RoundRobinAssigner(
... arguments
) {
...stuff
assignments = Sets.<CountingEntry<String>>newTreeSet();
}
顯然,這是次優的,因爲我想使用同步集合。爲什麼Guice所謂的教練會表現出與正常教師不同的行爲?這些代碼都沒有任何編譯問題,並且番石榴的類Sets
也被加載了,所以我不知道是什麼導致了這個問題。
是的,這確實是問題所在。兩個相互矛盾的Guava聲明在不同的項目「pom.xml」中。 Eclipse正在使用最新版本進行編譯,但運行遵從實際的Maven規則,導致錯誤。 – 2013-03-05 04:53:53