2014-07-03 20 views
1
具有与该openkad项目问题

失败,但可能是吉斯/环境问题:命名标注在罐子和源

要点是代码使用吉斯到:

@Provides 
@Singleton 
@Named("openkad.rnd") 
Random provideRandom(@Named("openkad.seed") final long seed) { 
     return seed == 0 ? new Random() : new Random(seed); 
    } 

然而@Singleton和@命名(“openkad.rnd”)被编译器标记为不正确的位置。

,显然这也是正确的,为命名注释针对一个领域,没有方法:

/** 
* Annotates named things. 
* 
* @author [email protected] (Bob Lee) 
*/ 
@Retention(RUNTIME) 
@Target({ ElementType.FIELD, ElementType.PARAMETER }) 
@BindingAnnotation 
public @interface Named { 
    String value(); 
} 

要重新创建:

  1. 使用JDK 1.6或1.8针对各种运行时
  2. Eclipse中创建Java项目
  3. 通过pom包含依赖项(尝试1到4)
  4. 使用源码或openkad r60 jar文件运行单元测试(https://code.google.com/p/openkad/

预期产量是多少?你看到了什么呢?

成功为所有UT的,但我看到这个:

com.google.inject.CreationException: Guice configuration errors: 

1) Error at il.technion.ewolf.kbr.openkad.BootstrapNodesSaver.<init>(BootstrapNodesSaver.java:26): 
Binding to java.io.File annotated with @com.google.inject.name.Named(value=openkad.file.nodes) not found. No bindings to that type were found. 

2) Error at il.technion.ewolf.kbr.openkad.IncomingContentHandler.<init>(IncomingContentHandler.java:43): 
Binding to java.util.concurrent.ExecutorService annotated with @com.google.inject.name.Named(value=openkad.executors.client) not found. No bindings to that type were found. 

3) Error at il.technion.ewolf.kbr.openkad.KadNet.<init>(KadNet.java:75): 
Binding to il.technion.ewolf.kbr.Node annotated with @com.google.inject.name.Named(value=openkad.local.node) not found. No bindings to that type were found. 

4) Error at il.technion.ewolf.kbr.openkad.bucket.KadBuckets.<init>(KadBuckets.java:58): 
Binding to il.technion.ewolf.kbr.KeyFactory not found. No bindings to that type were found. 

5) Error at il.technion.ewolf.kbr.openkad.handlers.ForwardHandler.<init>(ForwardHandler.java:96): 
Binding to il.technion.ewolf.kbr.Node annotated with @com.google.inject.name.Named(value=openkad.local.node) not found. No bindings to that type were found. 

6) Error at il.technion.ewolf.kbr.openkad.handlers.KademliaFindNodeHandler.<init>(KademliaFindNodeHandler.java:50): 
Binding to il.technion.ewolf.kbr.Node annotated with @com.google.inject.name.Named(value=openkad.local.node) not found. No bindings to that type were found. 

7) Error at il.technion.ewolf.kbr.openkad.handlers.PingHandler.<init>(PingHandler.java:38): 
Binding to il.technion.ewolf.kbr.Node annotated with @com.google.inject.name.Named(value=openkad.local.node) not found. No bindings to that type were found. 

8) Error at il.technion.ewolf.kbr.openkad.msg.ContentMessage.<init>(ContentMessage.java:26): 
Binding to long annotated with @com.google.inject.name.Named(value=openkad.rnd.id) not found. No bindings to that type were found. 

9) Error at il.technion.ewolf.kbr.openkad.msg.ContentRequest.<init>(ContentRequest.java:27): 
Binding to long annotated with @com.google.inject.name.Named(value=openkad.rnd.id) not found. No bindings to that type were found. 

10) Error at il.technion.ewolf.kbr.openkad.msg.FindNodeRequest.<init>(FindNodeRequest.java:25): 
Binding to long annotated with @com.google.inject.name.Named(value=openkad.rnd.id) not found. No bindings to that type were found. 

11) Error at il.technion.ewolf.kbr.openkad.msg.ForwardRequest.<init>(ForwardRequest.java:30): 
Binding to long annotated with @com.google.inject.name.Named(value=openkad.rnd.id) not found. No bindings to that type were found. 

12) Error at il.technion.ewolf.kbr.openkad.msg.PingRequest.<init>(PingRequest.java:22): 
Binding to long annotated with @com.google.inject.name.Named(value=openkad.rnd.id) not found. No bindings to that type were found. 

13) Error at il.technion.ewolf.kbr.openkad.net.KadServer.<init>(KadServer.java:59): 
Binding to com.google.inject.Provider<java.net.DatagramSocket> annotated with @com.google.inject.name.Named(value=openkad.net.udp.sock) not found. No bindings to that type were found. 

14) Error at il.technion.ewolf.kbr.openkad.net.KadServer.<init>(KadServer.java:59): 
Binding to java.util.concurrent.BlockingQueue<java.net.DatagramPacket> annotated with @com.google.inject.name.Named(value=openkad.net.buffer) not found. No bindings to that type were found. 

15) Error at il.technion.ewolf.kbr.openkad.net.MessageDispatcher.<init>(MessageDispatcher.java:56): 
Binding to java.util.concurrent.BlockingQueue<il.technion.ewolf.kbr.openkad.net.MessageDispatcher<?>> annotated with @com.google.inject.name.Named(value=openkad.net.req_queue) not found. No bindings to that type were found. 

16) Error at il.technion.ewolf.kbr.openkad.op.EagerColorFindValueOperation.<init>(EagerColorFindValueOperation.java:73): 
Binding to il.technion.ewolf.kbr.Node annotated with @com.google.inject.name.Named(value=openkad.local.node) not found. No bindings to that type were found. 

17) Error at il.technion.ewolf.kbr.openkad.op.JoinOperation.<init>(JoinOperation.java:48): 
Binding to il.technion.ewolf.kbr.Key annotated with @com.google.inject.name.Named(value=openkad.keys.zerokey) not found. No bindings to that type were found. 

18) Error at il.technion.ewolf.kbr.openkad.op.KadFindNodeOperation.<init>(KadFindNodeOperation.java:49): 
Binding to il.technion.ewolf.kbr.Node annotated with @com.google.inject.name.Named(value=openkad.local.node) not found. No bindings to that type were found. 

19) Error at il.technion.ewolf.kbr.openkad.op.KadLocalCacheFindValueOperation.<init>(KadLocalCacheFindValueOperation.java:65): 
Binding to il.technion.ewolf.kbr.Node annotated with @com.google.inject.name.Named(value=openkad.local.node) not found. No bindings to that type were found. 

19 error[s] 
    at com.google.inject.BinderImpl.createInjector(BinderImpl.java:277) 
    at com.google.inject.Guice.createInjector(Guice.java:79) 
    at com.google.inject.Guice.createInjector(Guice.java:53) 
    at com.google.inject.Guice.createInjector(Guice.java:43) 
    at il.technion.ewolf.kbr.KeybasedRoutingTest.the2NodesShouldAbleToSendArbitrarySerializableMessages(KeybasedRoutingTest.java:314) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74) 

感谢

+1

Guice 3 [允许在方法中使用@ @命名](https://code.google.com/p/google-guice/source/browse/core/src/com/google/inject/name/Named.java ?名称= 3.0)。尝试使用'mvn dependency:tree -Dverbose'来查看是否使用了冲突的Guice版本。 –

+0

就是这样,谢谢你让我看起来那里! – jumpstracks

+0

请记住标记此问题解决。谢谢。 –

回答