无法使用 intellij 14 解析路由文件中的符号并播放框架 2.4 reactivemongo
Posted
技术标签:
【中文标题】无法使用 intellij 14 解析路由文件中的符号并播放框架 2.4 reactivemongo【英文标题】:Cannot resolve symbol in routes file with intellij 14 and play framework 2.4 reactivemongo 【发布时间】:2015-08-20 09:30:25 【问题描述】:我正在使用 IntelliJ 14.1.4 和 Play 框架 2.4。我从这个 github 项目中复制了一些代码:https://github.com/JAVEO/play-reactivemongo-polymer 来测试 reactivemongo。基本上,我将 Posts.scala 复制到了我的控制器文件夹中。这是一个类:
package controllers
import javax.inject.Inject
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import play.api.libs.json.Json
import play.api.mvc.Action, BodyParsers, Call, Controller, Result
import play.modules.reactivemongo.MongoController, ReactiveMongoApi, ReactiveMongoComponents
import reactivemongo.api.commands.WriteResult
import reactivemongo.bson.BSONDocument, BSONObjectID
import reactivemongo.core.actors.Exceptions.PrimaryUnavailableException
class Posts @Inject()(val reactiveMongoApi: ReactiveMongoApi)
extends Controller with MongoController with ReactiveMongoComponents
...
在路由文件中,IntellJ 无法解析这一行:
GET /api/posts controllers.Posts.list
IntellJ 似乎只识别声明为对象的控制器而不识别类。
尝试使用 activator 运行时出现编译错误:
No Json serializer as JsObject found for type play.api.libs.json.JsObject. Try to implement an implicit OWrites or OFormat for this type
...
有什么帮助吗?
【问题讨论】:
由于原始示例应用程序运行良好,因此有必要检查您的依赖关系并正确使用import play.modules.reactivemongo.json._
:reactivemongo.org/releases/0.11/documentation/…
我认为这里有两个问题。第一个问题是 IntelliJ 无法解析注入的路由。第二个问题是 Json 序列化器。我尝试导入 github 示例。 IntelliJ 也无法解析 controllers.Posts.list。
第二个问题,原来是和play reactivemongo 版本有关。在我的 build.sbt 中,我使用了“0.11.6.play24”作为reactivemongo 建议的教程。这会导致“No Json ...”的错误消息。我像 github 示例一样将版本更改为“0.11.0.play24”。错误消息消失了。
如图所示检查导入是否与使用的版本相对应。
我尝试添加import play.modules.reactivemongo.json._
并使用0.11.6.play24
。它没有解决问题。仍然抛出 No Json 错误。
【参考方案1】:
升级插件和intellij到最新版本解决了这个问题。看起来像一个错误。
【讨论】:
以上是关于无法使用 intellij 14 解析路由文件中的符号并播放框架 2.4 reactivemongo的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ中的Spring boot + thymeleaf:无法解析变量
IntelliJ 和 JSP/JSTL 无法解析 tomcat7 中 JSTL 的 taglib