簡體   English   中英

奇怪的Guice注射錯誤

[英]Strange Guice injection error

嘗試使用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所謂的教練會表現得與正常教練不同? 這些代碼都沒有任何編譯問題,而且guava中的Sets類也已加載,所以我不知道是什么導致了這一點。

懷疑你只是看到了一個你在其他地方看到的問題 - 主要是因為Guice參與了通過反射加載類時, Sets.synchronizedNavigableSet的“鏈接時間”錯誤在Guice的上下文中顯示在“正常”構造函數調用中。

synchronizedNavigableSet僅在13.0介紹-這可能是你正在編譯對抗,而是針對舊版本的番石榴的運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM