【问题标题】:running the first example of playframework in IntelliJ on a Mac OSX在 Mac OSX 上运行 IntelliJ 中 playframework 的第一个示例
【发布时间】:2013-04-01 20:20:41
【问题描述】:

在我的新 mac OSX 10.8.3 中, 我安装 scala 2.10.0,玩 2.1.0 和 IntelliJ12, 并创建一个play项目如下:

#install brew
> ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
> brew --version
0.9.4

# update brew database
> cd $(brew --prefix)
> brew update
> cd $(brew --prefix) && git pull --rebase

# get scala 2.10.0
> brew versions scala
2.10.1   git checkout 79dc6f1 Library/Formula/scala.rb
2.10.0   git checkout 8ca07aa Library/Formula/scala.rb
2.9.2    git checkout 8896425 Library/Formula/scala.rb
...

> git checkout 8ca07aa Library/Formula/scala.rb   # 2.10.0
> brew install scala
> scala -version
Scala code runner version 2.10.0 -- Copyright 2002-2012, LAMP/EPFL


# install play 2.1.0
> brew versions play
2.1.0    git checkout 6a70797 Library/Formula/play.rb
...

> brew install play
> play -version
play! 2.1.0 (using Java 1.6.0_43 and Scala 2.10.0), http://www.playframework.org

然后我创建了一个播放应用程序:

> cd ~/
> play new myapp
name: myapp
Create a simple Scala application

# generate IntelliJ project:
> cd myapp
> play
> idea
[info] Created /Users/david/myapp/.idea_modules/myapp.iml
[info] Created /Users/david/myapp/.idea_modules/myapp-build.iml

并在 IntelliJ 中打开项目:

# Install IntelliJ 12 Ultimate Edition
Download it from http://www.jetbrains.com/idea/
12.0.4, Build #IU-123.169
Build on February 13, 2013

# install scala plugin in IntelliJ
run IntelliJ,
Preferences -> plugins -> Browse from repositories -> add scala.
current version: 0.7.134

# open myapp project in IntelliJ
File -> Open Project, chose the directory /Users/david/myapp

然后当我尝试运行单元测试时:

Project -> myapp -> test -> ApplicationSpec -> (right click) -> Run

我收到此错误:

scala: Сompiler library for module bigbrother not found: Right(Project) / Right(scala-2.10.0) 

其实有几个错误:

in File -> Project Structure -> Modules, there are two modules:
-myapp
-mypp-build

File -> Project Structure -> Modules -> myapp -> Scala
   Compiler library: scala-2.10.0 [not found]
   <<< ERROR

File -> Project Structure -> Modules -> myapp-build -> Dependencies:
   scala-2.9.2
   <<< ERROR

如果我如下更正第一个错误,

File -> Project Structure -> Modules -> myapp -> Scala -> Compiler library
and from the dropdown list I select the second valid option “scala-2.10.0 (version 2.10.0)”.

然后,重新运行测试,产生错误:

scala: Output path /Users/david/bigbrother/project/target/scala_2.9.2 is shared between: Module 'bigbrother-build' production, Module 'bigbrother-build' tests
Currently external Scala compiler prohibits output path sharing.
Either disable the external build mode or configure separate output paths.
TIP: you can use Project Artifacts to combine compiled classes.

我需要做什么才能让它工作?


更新:基于 Marius 和 alexwriteshere 答案的解决方案

使用

生成 IntelliJ 项目
> cd myapp
> play
> idea no-sbt-build-module

(而不仅仅是“想法”)

那么, 项目设置 -> 库 选择“Scala 2.9.2”并点击“-”将其删除。

那么, 项目设置 -> 模块 -> my_app -> Scala -> Scala-compiler 在这个下拉列表中,选择了用红色写的“Scala 2.10.0”。 移至列表顶部,然后选择黑色/灰色书写的“Scala 2.10.0 (version 2.10.0)”。


注意

有时(我不知道为什么)以黑色/灰色书写的选项“Scala 2.10.0(版本 2.10.0)”在下拉列表中不可用。 一个对我有用的解决方法如下: 项目设置 -> 全局库 -> + -> Java 从此目录中选择这些文件 scala-compiler.jar、scala-library.jar 和 scala-reflect.jar:/usr/local/Cellar/scala/2.10.0/libexec/lib/ 选择确定。 将其命名为“my scala 2.10.0 bundle”。

然后,再次进入项目设置 -> 模块 -> my_app -> Scala -> Scala-compiler 现在你拥有了两个,一个是你刚刚创建的“我的 scala 2.10.0 包”,另一个是标准的:“Scala 2.10.0(版本 2.10.0)”,用黑色/灰色编写。选择标准的,然后删除你创建的全局库。

我不知道为什么会发生这种情况,而且我真的不想花更多时间来找出这个问题。目前,这种解决方法对我有用。但如果您发现了,请随时添加评论。

【问题讨论】:

  • 太棒了!即使一切都可以编译,IDEA 仍然会将某些陈述标记为对我来说是错误的。但至少不是所有东西都是红色的。
  • 我从 maven 重新导入了项目(对我有用)

标签: scala playframework intellij-idea


【解决方案1】:

这个问题可以通过生成idea项目来解决:

$ play  # start play from command line
[your-play-project] $ idea no-sbt-build-module

这将启用 IntelliJ 对 Scala 的默认构建机制,不会导致这些问题。

【讨论】:

  • 对我来说很棒!作为旁注,我一直在命令行中交替使用sbtplay。运行此命令后,我遇到了sbt 的问题(可能是预期的),因此请确保您在进行此更改后继续使用play
【解决方案2】:

这是过去帮助我解决相同错误的原因:

  1. 删除所有 Scala 2.9.2 依赖项
  2. 转到Project Structure -&gt; Global libraries。创建一个新的,称为scala-bundle。为 2.10 添加 scala-compiler.jar、scala-library.jar、scala-reflect.jar。
  3. 最后,转到Project Structure -&gt; Modules -&gt; myapp -&gt; Scala 并选择scala-bundle

对于模块共享错误,请转到 Project Structure -&gt; Modules -&gt; &lt;each module&gt; -&gt; Paths 并更改路径,使其不一样。

【讨论】:

  • 我按照 Marius 所说的做了(play idea no-sbt-build-module),加上删除的 scala 2.9.2 依赖项,用 intellij 找到的 scala 2.10.0 模块更新(而不是由play idea生成的not-found)。我会将这两个问题都标记为答案,但 stackoverflow 不允许这样做。
猜你喜欢
  • 2023-04-06
  • 2019-06-15
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多