Intellij sbt sbt-native-packager和enablePlugins错误

18

我有一个在命令行上能够正常工作的sbt构建,但是Intellij不喜欢它。我的Intellij运行在Linux上,版本是14.1.4,Scala插件版本是1.5.2。

Intellij抱怨我使用了enablePlugins(JavaAppPackaging)。错误信息是"Expression Type (DslEntry) must conform to Setting[_] in SBT file"。

我的project/build.properties文件:

sbt.version=0.13.8

我的项目/plugins.sbt

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.3")

以下是我的 build.sbt 文件的前几行:

enablePlugins(JavaAppPackaging)

organization := "org.bodhi"

name := "jar-patch"

version := "1.0"
4个回答

3

@lifeGoGoGo在另一篇帖子Intellij IDEA和SBT语法错误提供的答案对我有效(在Ubuntu上,仅在全局设置和IntelliJ IDEA项目设置中设置自定义sbt-launcher.jar——如@Mustafa在此帖子中所回答的那样——还不够,但添加“lazy val”策略就足够了)。因此,例如,这对我在 build.sbt 中起作用(显然,您需要根据您要启用的特定插件更改插件详细信息,因为此问题是由 IntelliJ 而不是特定插件引起的):

lazy val root = (project in file(".")).
  enablePlugins(ScalaJSPlugin).
  settings(
    name := "Scala.js Tutorial",
    scalaVersion := "2.11.7",
    version := "1.0"
  )

2

IntelliJ使用的SBT启动器可能与您在命令行中运行的版本不同。

既然您已经知道了命令行SBT的工作原理,那么可以指导IntelliJ使用命令行SBT而不是捆绑的版本。

  1. 转到SBT的设置页面,位置为Settings -> Build, Execution, Deployment -> Build Tools -> SBT
  2. 在启动器部分中,选择Custom并指向安装在操作系统中的SBT启动器。在Ubuntu中,其默认位置为/usr/share/sbt-launcher-packaging/bin/sbt-launcher.jar

1
谢谢。我已经这样做了,但是IntelliJ仍然在抱怨。在GUI中,“enablePlugins()”下面有一条红色波浪线,并且具有相同的相关错误消息。据我所知,当我要求IntelliJ构建和运行程序时,它可以正常工作。只有GUI会出现这个烦人的信息。 - Christopher Helck
1
@Mustafa:谢谢,这解决了我的问题。顺便说一下,我先在全局设置中设置它,但不起作用,然后在项目打开时,我展开了“全局SBT设置”选项,并发现它仍然设置为“Bundled”,所以我也在那里将其设置为自定义,使用“/usr/local/Cellar/sbt/0.13.8/libexec/sbt-launch.jar”,最终它终于起作用了。 - alexP_Keaton
1
我有同样的问题。无论在IntelliJ设置中设置自定义sbt-launch.jar文件,错误仍然出现。从CLI运行命令很好用,但是IntelliJ无法构建项目。我正在使用SBT 0.13.8和IntelliJ Ultimate 14.1.4。 - Karol Janyst
1
@marcin_koss,尝试使用brew list sbt命令,它应该会告诉你包含jar文件的libexec目录路径。 - Emil D
1
我遇到了同样的问题,尽管我现在使用的是IntelliJ 15和捆绑的0.13.8 SBT。我试图指向我从CLI使用的自定义sbt 0.13.9,但问题仍然存在。 - Yardena
显示剩余2条评论

0

@karol:我也遇到了同样的问题。我通过在“从SBT导入项目” -> 全局SBT设置中重新选择打开项目/usr/share/sbt-launcher-packaging/bin/sbt-launcher.jar来解决了这个问题。


0
问题是由于IntelliJ IDEA标记语法错误的方式,可能会将有效代码标记为红色。这个特定的错误很快就会被修复。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接