在 SBT 中运行 Fat jar 并获取路径未找到异常

问题描述

我有一个 Scala 项目,它指的是在 src/main/resources/MyFile.csv 中创建的文件

我创建了一个胖罐子,下面是我的 build.sbt

name := "my-project"

version := "0.1"
scalaVersion := "2.11.12"

libraryDependencies ++= Seq(
  
  "org.apache.spark" %% "spark-core" % "2.4.7","org.apache.spark" %% "spark-sql" % "2.4.7"
)

assemblyMergeStrategy in assembly := {
  case PathList("meta-inf","services",xs @ _*) => MergeStrategy.filterdistinctLines
  case PathList("meta-inf",xs @ _*) => MergeStrategy.discard
  case "application.conf" => MergeStrategy.concat
  case _ => MergeStrategy.first
}

但是当我尝试运行我的胖罐子时,我收到以下错误

线程“main”org.apache.spark.sql.AnalysisException 中的异常: 路径不存在: 文件:/path/to/myProject/target/scala-2.11/src/main/resources/MyFile.csv

我正在使用以下命令运行jar

java -cp myProject.jar com.organization.myProject

有没有办法在 build.sbt 文件中包含我的文件/文件夹路径?

更新

我改变了我的 build.sbt 如下

 name := "my-project"
    
    version := "0.1"
    scalaVersion := "2.11.12"
    
    libraryDependencies ++= Seq(
      
      "org.apache.spark" %% "spark-core" % "2.4.7","org.apache.spark" %% "spark-sql" % "2.4.7"
    )
    
   scalaSource in Compile := baseDirectory.value / "main"

    assemblyMergeStrategy in assembly := {
      case PathList("meta-inf",xs @ _*) => MergeStrategy.filterdistinctLines
      case PathList("meta-inf",xs @ _*) => MergeStrategy.discard
      case "application.conf" => MergeStrategy.concat
      case _ => MergeStrategy.first
    }

但它仍然给出未找到的路径异常。有人有想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)