当前位置: 首页 > 知识库问答 >
问题:

dotty的运行时记录器异常

夏侯嘉荣
2023-03-14

我的项目依赖于scala日志库,我正在尝试升级我的项目以使用dotty。为此,我从https://github.com/lampepfl/dotty-example-project克隆了示例dotty项目并更新了它,包括日志库。请在下面找到项目的目录结构:-

[hduser@dotty dotty-example-project]$ tree
.
├── build.sbt
├── project
│   ├── build.properties
│   ├── plugins.sbt
│   └── project
└── src
    └── main
        └── scala
            └── Main.scala

5 directories, 4 files

项目/build.properties:-

sbt.version=1.1.6

项目/plugins.sbt

addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.2.2")

建筑sbt公司

libraryDependencies += ("com.typesafe.scala-logging" %% "scala-logging" % "3.7.2").withDottyCompat(scalaVersion.value)

libraryDependencies += ("ch.qos.logback" % "logback-classic" % "1.1.2").withDottyCompat(scalaVersion.value)

lazy val root = project
  .in(file("."))
  .settings(
    name := "dotty-example-project",
    description := "Example sbt project that compiles using Dotty",
    version := "0.1.0",

    scalaVersion := "0.9.0-RC1"
  )

src/main/scala/main。斯卡拉

import com.typesafe.scalalogging.LazyLogging

object Main extends LazyLogging{

    def main(args : Array[String]) : Unit = {
        logger.debug("Hello Dotty")
    }
}

上面的scala代码编译良好

sbt干净编译

但sbt运行失败,出现以下错误:-

[info] Running Main
[error] (run-main-0) java.lang.NoSuchMethodError: com.typesafe.scalalogging.Logger.debug(Ljava/lang/String;)V
[error] java.lang.NoSuchMethodError: com.typesafe.scalalogging.Logger.debug(Ljava/lang/String;)V
[error]     at Main$.main(Main.scala:6)
[error]     at Main.main(Main.scala)
[error]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]     at java.lang.reflect.Method.invoke(Method.java:498)
[error]     at sbt.Run.invokeMain(Run.scala:93)
[error]     at sbt.Run.run0(Run.scala:87)
[error]     at sbt.Run.execute$1(Run.scala:65)
[error]     at sbt.Run.$anonfun$run$4(Run.scala:77)
[error]     at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error]     at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:10)
[error]     at sbt.TrapExit$App.run(TrapExit.scala:252)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] java.lang.RuntimeException: Nonzero exit code: 1
[error]     at sbt.Run$.executeTrapExit(Run.scala:124)
[error]     at sbt.Run.run(Run.scala:77)
[error]     at sbt.Defaults$.$anonfun$bgRunTask$5(Defaults.scala:1185)
[error]     at sbt.Defaults$.$anonfun$bgRunTask$5$adapted(Defaults.scala:1180)
[error]     at sbt.internal.BackgroundThreadPool.$anonfun$run$1(DefaultBackgroundJobService.scala:366)
[error]     at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error]     at scala.util.Try$.apply(Try.scala:209)
[error]     at sbt.internal.BackgroundThreadPool$BackgroundRunnable.run(DefaultBackgroundJobService.scala:289)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] (Compile / run) Nonzero exit code: 1
[error] Total time: 1 s, completed Sep 1, 2018 6:02:01 AM

正如这里所建议的,这可能是因为宏。

请建议,因为我的周末项目依赖于loggin,我想将其升级到dotty。

共有1个答案

董子平
2023-03-14

目前,您唯一能做的就是找到另一个不需要调用宏就能使用它的日志依赖项(或者检查scala日志的源代码,看看是否有另一种不需要宏的调用方式)

 类似资料:
  • 问题内容: 我们在项目中使用LogBack,我想根据一些数据库值配置logger,即如果某个DB值设置为true,则logger应该同时使用文件和数据库附加程序,如果为false,则logger必须仅使用DB附加程序, 我也想保留使用静态最终记录器,因此不会在每次调用记录器时都创建一个新实例, 那我该怎么做呢? 问候, 问题答案: 您应该按照本示例中的说明以编程方式配置Logback 。

  • 我已经实现了kafka流应用程序。假设流当前正在处理的对象的一个字段包含一个数字而不是一个字符串值。当前,当处理逻辑(如< code >)中出现异常时。transform()方法,整个流被终止,我的应用程序停止处理数据。 我想跳过此类无效记录并继续处理输入主题上可用的下一条记录。此外,我不想在我的流处理代码中实现任何 try-catch 语句。 为了实现这一点,我实现了,因此它返回枚举,以便生成新

  • 这与log4j2版本2.13.2有关。 以下是一系列简短的事件-- 应用程序启动,并从类路径加载log4j2.xml. 应用程序按预期进行适当的日志记录。 第一次API调用发生。在内部加载log4j2_api.xml,并根据其配置进行API日志记录。 应用程序从API接收所需的数据并继续进行,但没有所需的日志记录。 我在这里的描述是--如果在新的配置中发现了预先加载的(由初始配置)记录器/追加器,

  • Dotty 是 Scala 的下一代编译器,也是 Scala 的新语言概念和编译器技术研究平台。 具有以下特性: Union, intersection and literal singleton types Implemented Trait parameters Implemented @static methods and fields Implemented SBT incremental

  • 我已经使用创建了一个catch-all异常处理程序,以捕获所有异常并相应地进行日志记录。但是,由于某种原因,sl4j记录器无法登录到控制台。相同的记录器在我的应用程序中的其他位置都可以工作,但它在catch-all异常处理程序中不起作用。 使用了龙目岛的,但我不确定这是否与龙目岛有关。我可以看到超类()有自己的,所以我不认为发生了任何奇怪的变量隐藏,但我不确定。 我非常肯定我的日志记录配置文件和配

  • 在XML中,我想要的配置如下所示(但我不想使用XML):