【问题标题】:package name not observed by sbtsbt 未观察到包名
【发布时间】:2021-10-09 15:43:59
【问题描述】:

我编译了一个名为 AverageAgeByName.scala 的 Spark 程序的小型 Scala 示例

这里是 build.sbt:

$ cd /opt/LearningSparkV2-master/chapter1/main/scala/chapter3
$ vim build.sbt
// Name of the package
name := "main/scala/chapter3"
// Version of our package
version := "1.0"
// Version of Scala
scalaVersion := "2.12.14"
// Spark library dependencies
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "3.1.2",
"org.apache.spark" %% "spark-sql" % "3.1.2"
)

我运行了命令:

$ sbt clean package
[info] Updated file /opt/LearningSparkV2 master/chapter1/main/scala/chapter3/project/build.properties: set sbt.version to 1.5.5
[info] welcome to sbt 1.5.5 (Oracle Corporation Java 1.8.0_242)
[info] loading project definition from /opt/LearningSparkV2-master/chapter1/main/scala/chapter3/project
[info] loading settings for project chapter3 from build.sbt ...
[info] set current project to main/scala/chapter3 (in build file:/opt/LearningSparkV2-master/chapter1/main/scala/chapter3/)
[success] Total time: 0 s, completed Aug 4, 2021 10:07:27 AM
[info] compiling 1 Scala source to /opt/LearningSparkV2-master/chapter1/main/scala/chapter3/target/scala-2.12/classes ...
[success] Total time: 9 s, completed Aug 4, 2021 10:07:36 AM

生成的类没有根据 build.sbt 中的包名放置在正确的目录层次结构中:

$ ls /opt/LearningSparkV2-master/chapter1/main/scala/chapter3/target/scala-2.12/classes
'AverageAgeByName$$typecreator1$1.class'  'AverageAgeByName$.class'   AverageAgeByName.class

它是平的。我希望课程应该放在 /opt/LearningSparkV2-master/chapter1/main/scala/chapter3/target/scala-2.12/classes/main/scala/chapter3

我哪里弄错了?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    build.sbt 中的name := "main/scala/chapter3" 与包或目标文件夹无关:它是在将项目打包为 JAR 时使用的项目名称.

    生成类的文件夹由您在 Scala 文件 Ave​​rageAgeByName.scala 中设置的package 驱动。

    下面会在target/scala-2/classes/xxx/yyy中生成类文件:

    package xxx.yyy
    
    class AverageAgeByName {}
    

    另请注意,通常源文件也会放在与您设置的包匹配的目录结构中。就是上面例子中的src/main/scala/xxx/yyy

    最后,您可能根本不关心类文件的生成位置。

    【讨论】:

    • 完美答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多