Не удалось найти или загрузить исполняемый файл jar основного класса sbt-Assembly - PullRequest
0 голосов
/ 07 июня 2018

Я определил зависимости проекта и стратегии слияния для них, чтобы создать файл jar с плагином sbt-assembly.Алос, основной класс в будущей банке тоже определился.После того, как я создаю файл jar и пытаюсь запустить его, используя скрипт bash, я получаю сообщение об ошибке:

Error: Could not find or load main class benchmarks.Main

Main находится в src / main / scala / benchmarks / Main, и это объект с методом main,В чем может быть проблема в этом проекте?

Вот мой bash-скрипт:

#!/usr/bin/env bash
java -cp "target/scala-2.11/benchmarking.jar" benchmarks.Main $1 $2

build.sbt с определенными зависимостями:

version := "0.1"

scalaVersion := "2.11.8"

assemblyJarName in assembly := "benchmarking.jar"

mainClass in assembly := Some("benchmarks.Main")

val sparkVersion = "2.2.0"

resolvers += "Spark Packages Repo" at "http://dl.bintray.com/spark-packages/maven"
libraryDependencies ++= Seq(
  "neo4j-contrib" % "neo4j-spark-connector" % "2.1.0-M4",
  "org.apache.spark" %% "spark-core" % sparkVersion % "provided",
  "org.apache.spark" %% "spark-sql" % sparkVersion  % "provided",
  "com.typesafe" % "config" % "1.3.0",
  "org.neo4j.driver" % "neo4j-java-driver" % "1.5.1",
  "com.opencsv" % "opencsv" % "4.1",
  "com.databricks" %% "spark-csv" % "1.5.0"
)

assemblyMergeStrategy in assembly := {
  case PathList("org","aopalliance", xs @ _*) => MergeStrategy.last
  case PathList("javax", "inject", xs @ _*) => MergeStrategy.last
  case PathList("javax", "servlet", xs @ _*) => MergeStrategy.last
  case PathList("javax", "activation", xs @ _*) => MergeStrategy.last
  case PathList("org", "apache", xs @ _*) => MergeStrategy.last
  case PathList("com", "google", xs @ _*) => MergeStrategy.last
  case PathList("com", "esotericsoftware", xs @ _*) => MergeStrategy.last
  case PathList("com", "codahale", xs @ _*) => MergeStrategy.last
  case PathList("com", "yammer", xs @ _*) => MergeStrategy.last
  case PathList("com", "typesafe", xs @ _*) => MergeStrategy.last
  case PathList("net", "jpountz", xs @ _*) => MergeStrategy.last
  case PathList("org", "slf4j", xs @ _*) => MergeStrategy.last
  case PathList("org", "neo4j", xs @ _*) => MergeStrategy.last
  case "about.html" => MergeStrategy.rename
  case "META-INF/ECLIPSEF.RSA" => MergeStrategy.last
  case "META-INF/mailcap" => MergeStrategy.last
  case "META-INF/mimetypes.default" => MergeStrategy.last
  case "plugin.properties" => MergeStrategy.last
  case "log4j.properties" => MergeStrategy.last
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
      oldStrategy(x)
}

1 Ответ

0 голосов
/ 13 июля 2018

Восстановлен новый кувшин и проверено местоположение основного класса.

...