Акка: отсутствует акка.версия

У меня есть проект scala, который у меня хорошо работает внутри IntelliJ с конфигурацией Run/Debug, установленной в Application, и теперь я хотел бы создать jar для его запуска, используя 'java -jar .jar'. Это проект Maven, а не SBT.

У меня есть три модуля, а верхний модуль, который включает в себя все остальные модули, имеет файл reference.conf в папке ресурсов. Это минимальное application.conf, не много настроек. Еще один из модулей имеет свой собственный reference.conf.

Я создал артефакт, основанный на моем верхнем модуле, и строю его, чтобы создать банку. Когда я выполню это с Java

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.se.pd.Main.main(Main.scala)
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'
    at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:151)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164)
    at com.typesafe.config.impl.SimpleConfig.getString(SimpleConfig.java:206)
    at akka.actor.ActorSystem$Settings.<init>(ActorSystem.scala:168)
    at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:504)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:141)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:118)
    at com.se.pd.ServiceMain$class.$init$(ServiceMain.scala:25)
    at com.se.pd.Main$.<init>(Main.scala:17)
    at com.se.pd.Main$.<clinit>(Main.scala)

Когда я распаковываю файл, я вижу объединенный файл reference.conf в корневом каталоге.

Что мне не хватает? Нужно ли делать что-то конкретное при создании ActorSystem? Я попытался удалить все мои файлы конфигурации и запустить со всеми настройками по умолчанию, но это все равно не сработало, хотя в этом случае ошибка сменилась жалобой на "akka.version" и жалобой на "akka". Значит, мне кажется, что я просто не загружаю значения по умолчанию Акки?

1 ответ

Я исправил это в своих целях, но он не совсем прояснил мне, в чем проблема. Мое исправление (специфичное для IntelliJ IDEA) состояло в том, чтобы изменить артефакт с:

"Извлечь в целевой JAR"

в

"скопировать в выходной каталог и ссылку через манифест"

Я полагаю, что-то теряется, когда я создаю большую толстую банку.

-

Я просто хотел добавить лучшее решение для создания "толстой банки" с Maven. Но я не могу взять кредит, поскольку похоже, что страница Акки, на которую ссылается Золтан, теперь предлагает то же самое решение, и, честно говоря, я не могу вспомнить, где я нашел это. Возможно, я столкнулся с обновленной страницей в какой-то момент в прошлом. Пожалуйста, обратитесь к этой ссылке для гораздо лучшей информации.

Так:

Используйте плагин maven для создания шейдеров. Затем убедитесь, что вы объединили файлы конфигурации:

<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
          <resource>reference.conf</resource>
     </transformer>
     <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
      <mainClass>myMainClass</mainClass>
</transformer>

Используя эту конфигурацию, я могу успешно создавать толстые банки.

Другие вопросы по тегам