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

IntelliJ 13的编译器不会在Play项目中发现错误,但荧光笔会

颛孙和悌
2023-03-14

我一直在尝试获取IntelliJ的编译,以便在使用Play Framework 2.3.3和Scala 2.11.2的多模块项目中通知我源代码中的错误-IntelliJ是13.1.4版(最新稳定的最终版本)。

多模块项目的布局与Adrian Hurt的play-multidomain种子项目非常相似,请参阅https://github.com/adrianhurt/play-multidomain-seed或Typasafe Activator中的进一步参考。层次结构如下所示:

/root
   /app
      ...
   /conf
      ...
   /modules
      /module1
         /app
            ...
         /conf
            ...
      /module2
         /app
            ...
         /conf
            ...

根项目有一个build.sbt以及一个项目目录,其中包含一个Scala对象,该对象包含要在构建过程中使用的常见设置和帮助方法。每个子项目都位于模块文件夹中,并且还有一个build.sbt,在根目录的build.sbt中引用。

现在,如果我使用前面提到的“播放多域种子”(play multidomain seed)项目模板,我可以使用激活器(activator)使一切正常运行。使用“导入SBT项目”功能将项目导入IntelliJ后,我可以使用它,但当我运行编译时(即CTRL F9表示“生成项目”--无论是运行增量编译还是完全重新编译,都不会显示任何编译时错误(如无法解决的符号或其他语法错误)。代码编辑器中的Scala荧光笔将向他们显示正确的错误消息!在命令行上的sbt激活器中运行编译将发现错误,而IntelliJ只是简单地说“编译成功完成”。

有趣的是,这似乎只发生在作为Play项目的子项目中,使用标准文件夹布局的库项目(即src/main/scala等中的源)工作得很好-即我从IntelliJ获得正确的编译器反馈。源和资源路径根据IntelliJ的“项目结构”对话框正确设置,即Play子项目使用app作为其源文件夹。

我有另一个基于Play 2.2的项目。使用单个构建的x。scala文件,而不是单个构建。sbt文件和工作正常-我还没有真正弄清楚如何“移植”构建。scala将文件改为2.3版本,但因为他们已经更改了很多内容,并且文档中说是构建的。sbt(尽可能)是最佳实践。

我还没有开始重新安装Scala/Play插件。我可能会在IntelliJ 14的EAP上尝试一下,看看这是否会改变什么。我尝试了将项目导入IntelliJ的“导入SBT项目”方法,以及Play Framework的idea命令和SBT idea插件的gen idea命令(这应该大致类似于Play所做的,因为它使用了这个插件的某些版本/分支)。更改设置中的“增量编译方式”设置-

有没有人也看到过这个问题,或者有没有关于我可以尝试什么的想法?这让我很难过:)。

太长别读

如果我在Scala源文件中出现错误,IntelliJ启动的编译过程不会报告它,但是控制台上的sbt会正确报告它。IntelliJ荧光笔(在代码编辑器中)还使用正确的错误消息(例如“无法解析符号xyz”)将其标记为错误。这仅适用于Play模块,而不是“标准”库项目。我假设编译器根本没有编译Play模块中的源文件,原因我不明白。

共有1个答案

谷梁存
2023-03-14

所以在所有这些很好的混乱之后,事实证明这是IntelliJ的Play2支持插件0.41版本的问题,因为将Scala和Play 2插件降级为0.38.441修复了我的问题。您可以在http://plugins.jetbrains.com/update/index?pr=idea找到这些版本

问题中的错误似乎是这个:http://youtrack.jetbrains.com/issue/SCL-7423-还没有正式确认这是否真的导致了这个问题,但它似乎仍然非常相关且非常重要。

我认为它与build.sbt文件有关的原因是,当将build.sbt重构为Build.scala时,我安装了更新Scala/Play插件的IntelliJ 14 EAP,并且由于插件文件夹在IntelliJ 13和14 EAP之间共享,它只是覆盖了它们。当我切换回IntelliJ 13时,因为14 EAP没有解决问题,我只降级/重新激活了0.41版本的Scala插件,而Play插件保持停用状态——在0.41版本中再次激活它会使问题重新出现。

真是一段旅程。

 类似资料:
  • 问题内容: 我使用突出显示Java文本窗格中的文本。我要删除所有突出显示(突出显示可能不止一个字符串),并希望它返回已删除突出显示的字符串的位置,因此显然我不能使用 有人可以帮忙吗?谢谢 问题答案: 怎么样

  • 问题内容: 关于apache lucene所提供的热门荧光笔,我有两个问题: 请参阅此功能,您能否解释令牌流参数的使用。 我有几个包含多个字段的大型lucene文档,每个字段中都有一些字符串。现在,我找到了与特定查询最相关的文档。现在找到该文档,因为查询中的几个单词可能与文档中的单词匹配。我想找出查询中的哪些词造成了这种情况。因此,我计划使用Lucene Hit Highlighter。示例:如果

  • 所以当我不使用我的maven实现时,我在编译我的应用程序时遇到了麻烦。它将编译没有任何麻烦与maven-gwt-plugin。 我收到的错误表示生成器无法获取其请求的类信息: 显然,该类存在并在maven实现中工作。我不明白为什么在使用eclipse“Java应用程序”运行配置进行标准构建时它不起作用。以下是我的跑步配置的设置: 有人知道这是怎么回事吗?

  • 得到如下错误: Jenkins编译错误 [javac] /var/lib/jenkins/workspace/CWL_Smoke_New/SeleniumFW/CWL_NewSuite/src/com/collegeweeklive/common/AppLibrary.java:14:错误:包org.apache.commons.lang3不存在 [javac]导入org.apache.commo

  • 我使用典型的创建了一个项目,然后我使用生成. iml文件。当我将. iml文件导入Intellij IDEA时,我不知道如何让编译器库识别。以下是一些截图: 请帮帮忙!

  • 当我运行任务或时,我看不到任何编译器错误,并且得到了一个有效的JAR。当我从Intellij13.1.1#UI-135.480运行run配置时,我看到来自Scalac的以下错误。 我尝试运行,使缓存无效,杀死所有nailgun运行者,重新启动IntelliJ idea。我现在总是看到这个错误。我以前也遇到过类似的问题,唯一的解决方法就是从我的计算机中删除所有IntelliJ文件并重新安装它。我希望