【问题标题】:Play 2.2.2 with IntelliJ 13 & SBT 0.13 cant run - No main class detected使用 IntelliJ 13 和 SBT 0.13 玩 2.2.2 无法运行 - 未检测到主类
【发布时间】:2014-05-13 15:52:16
【问题描述】:

我正在尝试使用最新的 Play 2 和 Scala 插件在 IntelliJ 13.1 中运行类型安全激活器项目之一。

我可以通过类型安全激活器运行项目没有问题,但是当我尝试通过 IntelliJ 中的build.sbt 文件打开激活器项目时,它似乎一切正常,直到我尝试通过 Play 2 运行该东西应用运行配置。我收到以下错误;

"C:\Program Files\Java\jdk1.8.0\bin\java" -Dfile.encoding=UTF8 -Djline.terminal=none -Dsbt.log.noformat=true -Dsbt.global.base=C:\Users\nw\AppData\Local\Temp\sbt-global-plugin5970836074908902993stub -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -classpath C:\Users\nw\.IntelliJIdea13\config\plugins\Scala\launcher\sbt-launch.jar xsbt.boot.Boot run
    Getting org.fusesource.jansi jansi 1.11 ...
    :: retrieving :: org.scala-sbt#boot-jansi
        confs: [default]
        1 artifacts copied, 0 already retrieved (111kB/37ms)
    Getting org.scala-sbt sbt 0.13.0 ...
    :: retrieving :: org.scala-sbt#boot-app
        confs: [default]
        43 artifacts copied, 0 already retrieved (12440kB/109ms)
    Getting Scala 2.10.2 (for sbt)...
    :: retrieving :: org.scala-sbt#boot-scala
        confs: [default]
        5 artifacts copied, 0 already retrieved (24390kB/62ms)
    [info] Set current project to modules (in build file:/J:/DEV/TYPESAFE/reactive-maps/.idea/modules/)
    java.lang.RuntimeException: No main class detected.
        at scala.sys.package$.error(package.scala:27)
    [trace] Stack trace suppressed: run 'last compile:run' for the full output.
    [error] (compile:run) No main class detected.
    [error] Total time: 0 s, completed 02/04/2014 10:31:12 PM
    Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0

    Process finished with exit code 1

我的 build.sbt 看起来像这样;

name := """reactive-maps"""

version := "1.0-SNAPSHOT"

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.2.1",
  "com.typesafe.akka" %% "akka-contrib" % "2.2.1",
  "com.typesafe.play.extras" %% "play-geojson" % "1.0.0",
  "org.webjars" %% "webjars-play" % "2.2.1",
  "org.webjars" % "bootstrap" % "3.0.0",
  "org.webjars" % "knockout" % "2.3.0",
  "org.webjars" % "requirejs" % "2.1.8",
  "org.webjars" % "leaflet" % "0.7.2"
)

play.Project.playScalaSettings

只需从项目文件夹中的命令行运行sbt run 即可。所以 SBT 项目的导入方式存在一些问题。

【问题讨论】:

标签: scala intellij-idea playframework-2.0 sbt sbt-idea


【解决方案1】:

你也可以用玩来修复它

cd /path/to/project
play
[project] idea with-sources=yes

现在您可以右键单击应用程序并运行 Play2 应用程序。

【讨论】:

  • 这对我有用,看起来像一个更清洁的解决方案。谢谢。
  • 这应该是公认的答案。感谢您的提示
  • 这对我有用,但我用 sbt 代替了play(因为播放命令适用于较旧的播放版本)
  • 我必须右键单击build.sbt,然后单击Run Play 2。然后您可以保存运行配置以供将来参考。
【解决方案2】:

刚刚遇到同样的问题 - 我的项目是这样设置的:

root/
  .idea/
  MainApp/ <-- this one is a Play 2.2.2 project
    .idea/
    apps/ <-- contains other Play2 projects

我试图运行MainApp 项目并且遇到了同样的问题。

如果您在运行中发现错误:[info] Set current project to modules (in build file:/J:/DEV/TYPESAFE/reactive-maps/.idea/modules/)

表示它正在将项目设置为modules。你希望它是reactive-maps

我的也是这样 - 我的快速解决方案:

--找到文件.idea/modules/reactive-maps.iml,移动到根级reactive-maps/目录下。

-- 打开文件,Ctrl-FCtrl-R(查找和替换)

-- 查找:$MODULE_DIR$/../.. 替换为:$MODULE_DIR$/

此时再次运行 Play2 应用程序。

理想的解决方案是正确导入它(我确信有办法做到这一点),但这让我的应用程序通过 IntelliJ 快速运行(尽管它可能会在重新启动/SBT 刷新时中断)。

【讨论】:

  • 据我所知,当我从现有模块/源导入项目时会发生这种情况(例如,将项目作为现有 SBT 模块导入)。从头开始创建一个新项目似乎总是可行的
  • :) 是的,我就是这么做的。
  • 应用您的 hack 并在 Idea 重新启动后,它无法打开项目。 Idea 抱怨 .idea/modules 文件夹中缺少 *.impl 文件
  • 有趣 - 我还没有看到这种情况发生。我还重新构建了我的应用程序,以便不再从现有源/SBT 模块导入,从而长期解决问题。
  • 谢谢。这对我有用。我还更改了“.idea/modules.xml”中模块文件的路径,使其指向项目的根目录。
最近更新 更多