Scala报错‘object myClass is not a member of package <root>’解决咨询
解决Scala中
object myClass is not a member of package <root>报错问题 问题核心原因
- 你定义的
myClass是case class,但错误提示寻找的是object myClass,类型不匹配; - 编译时未同时处理两个文件,导致编译器找不到
myClass的定义; - 不必要的
_root_导入反而混淆了查找逻辑——你的类本来就在根包下,无需额外指定根包导入。
具体解决步骤
- 修正导入逻辑:两个类都在根包下,Scala默认会自动查找根包内的类,直接删掉
import _root_.myClass即可;如果要显式导入,用import myClass(注意是class而非object)。 - 同时编译两个文件:
- 命令行编译时,需同时指定两个文件:
scalac myClass.scala test1.scala scala test1 - 使用IDE(如IntelliJ)时,确保两个文件放在同一个源目录(比如
src/main/scala),IDE会自动处理编译依赖。
- 命令行编译时,需同时指定两个文件:
- 建议遵循Scala命名规范:类名首字母大写,将
myClass改为MyClass,避免和变量名混淆,减少潜在问题。
修正后的代码示例
test1.scala
object test1 { def main(args: Array[String]): Unit = { // 直接实例化类(若改了类名则用MyClass) val clsInstance = myClass() println(this.getClass.getName) println(clsInstance) } }
myClass.scala
// 推荐首字母大写写法:case class MyClass() case class myClass()
内容的提问来源于stack exchange,提问作者Th333w1
相关产品推荐
相关产品推荐

