代码之家  ›  专栏  ›  技术社区  ›  user51

在Java代码中没有找到配置FIAGLE的合适方法

  •  0
  • user51  · 技术社区  · 6 年前

    我有Java多语言应用程序,主要有Java代码,并且很少使用Scala库。

    下面的scala代码编译得很好。

    import com.twitter.finagle.Http.Client
    import com.twitter.finagle.Http
    import com.twitter.finagle.param.Logger
    
    object Main extends App {
    
      private val loggerFinagle = java.util.logging.Logger.getLogger("FinagleLogger")
    
      val client: Client = Http.client
        .configured(Logger(loggerFinagle))
    }
    

    我用java编写与下面相同的代码

    import com.twitter.finagle.Http;
    import com.twitter.finagle.param.Logger;
    
    public class JavaMain {
        public static void main(String[] args) {
    
            java.util.logging.Logger loggerFinagle = java.util.logging.Logger.getLogger("FinagleLogger");
    
            Http.client()
                   .configured(new Logger(loggerFinagle));
        }
    }
    

    当我编译代码时,我会得到下面的错误-

    [info] Compiling 1 Scala source and 1 Java source to /Users/rajkumar.natarajan/Documents/Coding/finagle-errors/target/scala-2.12/classes ...
    [error] /Users/rajkumar.natarajan/Documents/Coding/finagle-errors/src/main/java/JavaMain.java:10:1: no suitable method found for configured(com.twitter.finagle.param.Logger)
    [error]     method com.twitter.finagle.Stack.Parameterized.<P>configured(P,com.twitter.finagle.Stack.Param<P>) is not applicable
    [error]       (cannot infer type-variable(s) P
    [error]         (actual and formal argument lists differ in length))
    [error]     method com.twitter.finagle.Stack.Parameterized.<P>configured(scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>) is not applicable
    [error]       (cannot infer type-variable(s) P
    [error]         (argument mismatch; com.twitter.finagle.param.Logger cannot be converted to scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>))
    [error]     method com.twitter.finagle.client.StackClient.<P>configured(P,com.twitter.finagle.Stack.Param<P>) is not applicable
    [error]       (cannot infer type-variable(s) P
    [error]         (actual and formal argument lists differ in length))
    [error]     method com.twitter.finagle.client.StackClient.<P>configured(scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>) is not applicable
    [error]       (cannot infer type-variable(s) P
    [error]         (argument mismatch; com.twitter.finagle.param.Logger cannot be converted to scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>))
    [error]     method com.twitter.finagle.client.EndpointerStackClient.<P>configured(P,com.twitter.finagle.Stack.Param<P>) is not applicable
    [error]       (cannot infer type-variable(s) P
    [error]         (actual and formal argument lists differ in length))
    [error]     method com.twitter.finagle.client.EndpointerStackClient.<P>configured(scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>) is not applicable
    [error]       (cannot infer type-variable(s) P
    [error]         (argument mismatch; com.twitter.finagle.param.Logger cannot be converted to scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>))
    [error]     method com.twitter.finagle.Http.Client.<P>configured(scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>) is not applicable
    [error]       (cannot infer type-variable(s) P
    [error]         (argument mismatch; com.twitter.finagle.param.Logger cannot be converted to scala.Tuple2<P,com.twitter.finagle.Stack.Param<P>>))
    [error] Http.client()
    [error]                .configured
    

    看起来我必须通过这个元组,但我不知道怎么做。

    Github的项目是 here .

    以下是我的项目的依赖项详细信息-

    scala版本-2.12.6

    Java版本-1.80Y151

    finagle版本-7.1.0

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gábor Bakos    6 年前

    According to the docs ,您需要拨打 mk() 方法,因此类似下面的内容应该创建适当的元组:

        Http.client()
               .configured(new Logger(loggerFinagle).mk());
    
    推荐文章