【问题标题】:Can't expand macros compiled by previous versions of Scala无法扩展以前版本的 Scala 编译的宏
【发布时间】:2017-03-14 06:56:24
【问题描述】:

我将 Scala 版本从 2.10.x 更改为 2.11.8。我遇到了一些编译问题。我试过了,但仍然无法解决,因为我在 Scala 和 sbt 方面很差。

WebService.scala:36: can't expand macros compiled by previous versions of Scala
[error]         logger.error(s"WebService.getSiteData(${Id}): Unknown Error, Error Message: $e")

这可能是什么问题?

【问题讨论】:

  • 来到这里,来自不同项目的相同错误消息。自己等待答案
  • 我认为,您要么需要升级宏项目的 Scala 版本,要么交叉编译它——也就是说,假设您可以访问源代码。
  • 我在 sbt-unidoc 插件中看到了这一点(即使 Scala 版本匹配 100%),您是否有机会使用它?
  • 将 scala-reflect 添加到项目中解决了我的问题:github.com/sbt/sbt-unidoc/issues/29#issuecomment-286365633 - 如果这有帮助,请告诉我
  • @0__ 我也试过了,但没有运气。

标签: scala sbt scala-collections


【解决方案1】:

我解决了这个问题,但不是一件事,我做了几件事:

  1. 首先我检查了 WebService.scala 中的错误位置。
  2. 然后到相应的“Logger”类。
  3. 我检查了“Logger”类来自哪个 jar。
  4. 我发现它指的是一些超出我预期的东西。
  5. 那个 jar 来自我的一个依赖项目(模块),所以在 build.sbt 中,那些依赖 jar 排除了我发现的错误 jar。
  6. 在更改 WebService.scala 中的代码后,我删除了 logger 的导入并添加了新的导入,其中包含我所期望的 Logger。我在项目中的所有其他地方都做了同样的事情。

    WebService.scala:36: can't expand macros compiled by previous versions of Scala
    [error]         logger.error(s"WebService.getSiteData(${Id}): Unknown Error, Error Message: $e")
    

这不是记录器问题所特有的。如果您遇到“无法扩展以前版本的 Scala 编译的宏”问题”,您必须针对您的错误(我的案例记录器)执行相同的过程。

我第一次在网上搜索这个问题,我发现很多人面临同样的问题,但不同的库类(我面临 Logger 类问题)。

【讨论】:

    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 2017-12-12
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多