首页 > 解决方案 > 使用 IntelliJ 和使用 sbt 的 Payframework 项目时无法清除旧类

问题描述

设置细节 1. IntelliJ Idea Community Edition 2018.2.5 with sbt plugin 2. PlayFramework 3. scalaVersion 2.12.8 4. Java 1.8 (open JDK) 5. sbt: bundled sbt with play-scala-hello-world-tutorial 6. Host操作系统:Limux Mint 18.3、KDE ​​Plasma 5

问题: 我尝试使用 Playframework 中的 hello-world 项目模板 - 使用 IntelliJ 将其作为 sbt 项目导入并接受默认设置。进行一些编辑后,我直接删除了文件系统中的项目并用新副本替换它。但是,当我使用带有命令“run”的 sbt_command 窗口运行项目时,项目启动绑定到端口 9000 的 Play,并且正在运行的项目仍然显示应用程序的“旧”修改版本。

重现问题的步骤:

  1. 加载 2.7.x 版本的 play-scala-hello-world-tutorial
  2. 编辑 HomeController.scala;

    def index() = Action { implicit request: Request[AnyContent] =>
      Ok(views.html.index())
    }
    

    def index() = Action { implicit request: Request[AnyContent] =>
      Ok("Just Play Scala")
    }
    
  3. sbt_run
  4. Ctrl+D 退出正在运行的应用程序(在 IDE 的 sbt 命令窗口中)
  5. 关闭 IntellijIDEA
  6. 删除 Idea Workspace 中的项目根文件夹
  7. 放置新副本 play-scala-hello-world-tutorial scala-seed 项目模板
  8. 导入项目
  9. 使用 sbt 'run' 命令运行(在 IDE 的 sbt 命令窗口中)
  10. 查看http://localhost:9000/ => 结果“Just Play Scala”

尝试的解决方案 - 从 IntelliJ 关闭项目并从文件系统上的 IntelliJ-Idea 工作区中删除项目根文件夹 - 执行 #1 并删除 .ivy2 和 .mvn 目录 - 尝试使用文本编辑器在运行 Fedora28 的 VM 中重现问题复制更改。一切都按预期工作。所有更改都在播放中动态重新加载,并且更改在运行应用程序中可见。

诊断 IntelliJ 无法按预期/广告重新编译 sbt 项目工作,或者我不知道如何使用 IDE 正确清除以前编译的代码。

标签: scalaintellij-ideaplayframeworksbt

解决方案


推荐阅读