При экспорте проекта Java Scala не удалось получить scala/ScalaObject

Я работаю над eclipse с установленным подключаемым модулем Scala 2.9.3.
У меня есть проект Scala, который отлично работает с eclipse, но когда я экспортирую проект в «Runnable JAR File» и пытаюсь запустить его, я получаю следующее исключение:

java.lang.NoClassDefFoundError: scala/ScalaObject

Я попробовал все 3 варианта работы с библиотекой:

  • Извлечь необходимые библиотеки...
  • Пакет необходимых библиотек...
  • Скопируйте необходимые библиотеки...

Все попадают в одно и то же исключение.

Что мне нужно сделать, чтобы сделать из моего проекта отдельный JAR-файл?


person Roee Gavirel    schedule 21.07.2013    source источник
comment
Вы уверены, что scala-library.jar есть среди банок?   -  person pedrofurla    schedule 22.07.2013
comment
@pedrofurla: я не знаю, как это проверить (новичок в мире Java). но я предполагаю, что он где-то существует, так как он работает с Eclipse.   -  person Roee Gavirel    schedule 22.07.2013


Ответы (2)


Раньше я использовал плагин sbt-assembly, и он мне показался довольно простым в использовании.

person pedrofurla    schedule 22.07.2013

Если вы используете SBT для поддержки и создания своего проекта, то, как pedrofurla, вам следует попробовать sbt-assembly плагин. В самом простом случае просто добавьте следующее в сборку вашего проекта (я предпочитаю Build.scala, но в *.sbt это выглядит так же):

1) импорт:

import sbtassembly.Plugin._
import AssemblyKeys._

2) настройки:

mainClass in assembly := Some("path.to.MainClass")
jarName   in assembly := "jar-name.jar"

3) Если вы хотите опубликовать артефакт:

artifact in (Compile, assembly) ~= { art =>
  art.copy(`classifier` = Some("assembly"))
} // add classifier

а затем ваша задача публикации:

lazy val publishingSettings = addArtifact(artifact in (Compile, assembly), assembly) ++ Seq(
    publishTo := /* your repository settings */
  )

Вызов assembly для получения JAR-файла «все в одном» или публикации для публикации в репозитории. Это должно работать

person 4lex1v    schedule 22.07.2013
comment
Возможно, я что-то упустил, возможно, потому, что я привык к семейству C, C++ и C#. Но какой смысл в Scala, если я не могу использовать его для создания чего-то, что будет работать вне Eclipse, если только я не загружу дополнительные плагины и не изменю определения сборки вручную? - person Roee Gavirel; 23.07.2013
comment
Я уверен, что вы можете, просто я не знаю, как собрать проект в Eclipse, потому что я работаю с IDEA с sbt-плагином. И то, как вы строите/собираете свой проект, не имеет ничего общего с самим языком. - person 4lex1v; 23.07.2013