【问题标题】:Intellij Idea is loading *.class file instead of *.scala from library sourceIntellij Idea 正在从库源加载 *.class 文件而不是 *.scala
【发布时间】:2016-05-09 18:34:27
【问题描述】:

我的问题最好用截图来描述:

如您所见,我的 SBT/Scala 项目中加载了一个 org.virtuslab:unicorn-core_2.11 依赖项。具有相应源的 jar 文件也可用。出于某种原因,Intellij Idea 决定忽略可用的源文件 Table.scala 并改用 .class 文件。显然,所有其他文件都可以。

显然,如果没有包含在 .scala 文件中的信息,Intellij 将无法正确分析我的代码,并且我的项目中会出现 Cannot resolve symbol BaseIdRepository 错误(和类似错误)。

我手动检查了源包,Table.scala 文件在那里,看起来没问题。另外,直到两天前,这一切都完美无缺。我不知道为什么它崩溃了。当它仍然有效时,我尝试使用 git 将我的项目恢复到早期版本,但没有运气。

我尝试降级和升级库,我尝试删除它并再次添加它,我尝试基于现有资源创建一个全新的项目,但再次失败。

仅作记录,我能够编译并运行我的项目。 可能唯一相关的是我在编译项目时收到的警告:

[warn] /home/tobik/scala/payola-viz/src/app/model/appgen/repository/UsersRepository.scala:7: Could not find any member to link for "BaseIdRepository".

【问题讨论】:

  • 好吧,Tables trait does look incorrect 的自类型注释就是其中之一。我不认为有两个匿名的东西({}{})是允许的。至少这就是 Idea 遇到问题的原因。
  • 嗯嗯,我也明白了。但正如我所说......它直到两天前才起作用。
  • 是的,非常奇怪。源 jar 中的代码很好。您最近是否更新了想法或 scala 插件?也许他们引入了某种错误。
  • 这是我的想法,所以我尝试了几个不同的 scala 插件版本(我什至降级回 2.* 版本)。没有区别。
  • 作为一个临时解决方案,我将独角兽源直接添加到我的代码库中,并从项目库中手动将其删除。我摆脱了错误,它仍然可以编译,因为库仍然是build.sbt 中的依赖项。我想一旦 Intellij 将项目与build.sbt 同步,它就会中断,但我可以重复这个过程。为了避免污染我的项目,我将包含的源添加到.gitignore。这是一个丑陋的工作。我希望有人会提出一个实际的解决方案......

标签: scala intellij-idea sbt


【解决方案1】:

我收到了Scala 插件的更新,似乎解决了这个问题。


如果您遇到类似问题,这个临时解决方案对我有用:我将 unicorn 源代码直接添加到我的代码库中,然后手动将其从项目库中删除。我摆脱了错误,它仍然可以编译,因为库仍然是built.sbt 中的依赖项。为了避免污染我的项目,我将包含的源添加到.gitignore。解决方法在一段时间后就失效了,但我所要做的就是再次重复该过程。

【讨论】:

    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 2014-09-22
    • 2011-12-03
    • 2018-09-08
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多