【发布时间】:2015-01-27 17:09:40
【问题描述】:
我创建了一个 Scala Play 2.0 项目,然后添加了一个带有准系统 main 函数的 Test 对象。
当我运行Test 对象时,我得到一个ClassDefNotFoundError。这是因为Test 对象显然没有被编译到任何项目文件夹中的文件中。
运行捆绑的 Play 服务器工作正常。
有没有人尝试将可运行对象添加到 Scala Play 框架项目并取得成功?
Test 对象正在名为 test-module 的 Play 项目内的新模块中创建。
**** 更新****
SBT 似乎在某种程度上与“测试模块”模块发生冲突。 Play 是一个 SBT 项目,因此它会编译到其“目标”目录。然而,'test-module' 不是 SBT,因此想要编译到 'out' 目录。问题是编译后的文件永远不会进入“out”目录,实际上它们根本不会进入任何目录。
【问题讨论】:
-
您能否展示您的代码并提供您在项目中创建 Test 对象的位置?
-
真的没有代码可以显示,Play 2.0 是由 IntelliJ 14 生成的。Test 对象是一个插入的 hello world。保证在任何代码中都没有错误。立即用位置更新 OP。
-
test-module是你Play项目的顶级目录吗?因为默认情况下应用程序代码应该在app文件夹内。顺便说一下,runnable object 是什么意思,应用程序的入口点? -
@PermaFrost
test-module在顶级目录下。我的意思是可运行,因为对象有一个主要方法。这是对某些代码的测试。我不需要网络服务器或游戏来测试它。 -
如果是测试,我建议使用测试框架来构建它,那么您可以通过
sbt控制台使用框架的运行器,一种可能是ScalaTest (scalatest.org)。如果您想在sbt中运行特定的主类,您也可以尝试sbt run-main <fullClassName>- 您只需确保您的对象/类位于类路径中(对于 Play 项目,这意味着在app文件夹中)。希望这会有所帮助。
标签: scala playframework playframework-2.0