Scala提取器编译报错:为何无法识别ExtractDemo?
问题原因及解决办法
你的代码编译报错的核心原因是Scala单文件直接运行时,要求主对象(object)的名称必须和文件名完全一致,同时你执行命令时的文件名和代码中的对象名不匹配:
- 代码中定义的主对象是
ExtractDemo,但你的文件名是ExtractorDemo.scala(多了一个字母o),执行命令时用的也是ExtractorDemo.scala,Scala会尝试在该文件中寻找名为ExtractorDemo的主对象,自然找不到你定义的ExtractDemo。 - 另外,使用
scala命令直接运行.scala文件时,文件中必须存在与文件名同名的、包含main方法的对象,或者继承自App特质的对象。
解决步骤
方法一:修改文件名匹配对象名
将文件名从ExtractorDemo.scala改为ExtractDemo.scala,然后执行命令:
scala ExtractDemo.scala
方法二:修改对象名匹配文件名
将代码中的object ExtractDemo改为object ExtractorDemo,保持和文件名一致,然后执行原命令:
scala ExtractorDemo.scala
方法三:先编译再运行
如果不想修改文件名或对象名,可以先编译代码:
scalac ExtractorDemo.scala
编译后会生成ExtractDemo.class等文件,再运行主对象:
scala ExtractDemo
验证结果
修改完成后运行,会输出:
10 10 is bigger two times than 5
内容的提问来源于stack exchange,提问作者Shane Gannon
相关产品推荐
相关产品推荐

