Упаковка приложения Play для Windows с использованием Native sbt Packager

Я сделал небольшой HTTP-сервер с игрой. Теперь я хочу собрать версию для Windows с установкой. Я уже сделал один несколько месяцев назад, но я изменил свое приложение, поэтому мне нужно переделать установку. Но, не меняя ничего в файле sbt, это не работает...

Вот команда, которую я использую для сборки установки:

activator windows:packageBin

Вот ошибка, которую я получаю при запуске приложения после установки:

Oops, cannot start the server.
Configuration error: Configuration error[application: application.conf: java.io.IOException: resource not found on classpath: application.conf, application.json: java.io.IOException: resource not found on classpath: application.json, application.properties: java.io.IOException: resource not found on classpath: application.properties]
        at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94)
        at play.api.Configuration$.load(Configuration.scala:66)
        at play.api.WithDefaultConfiguration$$anonfun$initialConfiguration$1.apply(Application.scala:76)
        at play.api.WithDefaultConfiguration$$anonfun$initialConfiguration$1.apply(Application.scala:76)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.api.WithDefaultConfiguration$class.initialConfiguration(Application.scala:75)
        at play.api.DefaultApplication.initialConfiguration$lzycompute(Application.scala:402)
        at play.api.DefaultApplication.initialConfiguration(Application.scala:402)
        at play.api.WithDefaultGlobal$class.play$api$WithDefaultGlobal$$globalClass(Application.scala:25)
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalClass$lzycompute(Application.scala:402)
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalClass(Application.scala:402)
        at play.api.WithDefaultGlobal$class.play$api$WithDefaultGlobal$$javaGlobal(Application.scala:31)
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$javaGlobal$lzycompute(Application.scala:402)
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$javaGlobal(Application.scala:402)
        at play.api.WithDefaultGlobal$$anonfun$play$api$WithDefaultGlobal$$globalInstance$1.apply(Application.scala:54)
        at play.api.WithDefaultGlobal$$anonfun$play$api$WithDefaultGlobal$$globalInstance$1.apply(Application.scala:53)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.api.WithDefaultGlobal$class.play$api$WithDefaultGlobal$$globalInstance(Application.scala:52)
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalInstance$lzycompute(Application.scala:402)
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalInstance(Application.scala:402)
        at play.api.WithDefaultGlobal$class.global(Application.scala:68)
        at play.api.DefaultApplication.global(Application.scala:402)
        at play.api.WithDefaultConfiguration$class.play$api$WithDefaultConfiguration$$fullConfiguration(Application.scala:82)
        at play.api.DefaultApplication.play$api$WithDefaultConfiguration$$fullConfiguration$lzycompute(Application.scala:402)
        at play.api.DefaultApplication.play$api$WithDefaultConfiguration$$fullConfiguration(Application.scala:402)
        at play.api.WithDefaultConfiguration$class.configuration(Application.scala:84)
        at play.api.DefaultApplication.configuration(Application.scala:402)
        at play.api.Application$class.$init$(Application.scala:274)
        at play.api.DefaultApplication.<init>(Application.scala:406)
        at play.core.StaticApplication.<init>(ApplicationProvider.scala:53)
        at play.core.server.NettyServer$.createServer(NettyServer.scala:253)
        at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:289)
        at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:284)
        at scala.Option.map(Option.scala:145)
        at play.core.server.NettyServer$.main(NettyServer.scala:284)
        at play.core.server.NettyServer.main(NettyServer.scala)
Caused by: com.typesafe.config.ConfigException$IO: application: application.conf: java.io.IOException: resource not found on classpath: application.conf, application.json: java.io.IOException: resource not found on classpath: application.json, application.properties: java.io.IOException: resource not found on classpath: application.properties
        at com.typesafe.config.impl.SimpleIncluder.fromBasename(SimpleIncluder.java:235)
        at com.typesafe.config.impl.ConfigImpl.parseResourcesAnySyntax(ConfigImpl.java:128)
        at com.typesafe.config.ConfigFactory.parseResourcesAnySyntax(ConfigFactory.java:811)
        at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:113)
        at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:136)
        at com.typesafe.config.ConfigFactory.loadDefaultConfig(ConfigFactory.java:228)
        at com.typesafe.config.ConfigFactory.access$000(ConfigFactory.java:38)
        at com.typesafe.config.ConfigFactory$1.call(ConfigFactory.java:378)
        at com.typesafe.config.ConfigFactory$1.call(ConfigFactory.java:375)
        at com.typesafe.config.impl.ConfigImpl$LoaderCache.getOrElseUpdate(ConfigImpl.java:58)
        at com.typesafe.config.impl.ConfigImpl.computeCachedConfig(ConfigImpl.java:86)
        at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:375)
        at com.typesafe.config.ConfigFactory.load(ConfigFactory.java:299)
        at play.api.Configuration$.dontAllowMissingConfig$lzycompute(Configuration.scala:29)
        at play.api.Configuration$.dontAllowMissingConfig(Configuration.scala:29)
        at play.api.Configuration$.load(Configuration.scala:64)
        ... 34 more
Caused by: com.typesafe.config.ConfigException$IO: application.conf: java.io.IOException: resource not found on classpath: application.conf
        at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:183)
        at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:170)
        at com.typesafe.config.impl.Parseable.parse(Parseable.java:148)
        at com.typesafe.config.impl.SimpleIncluder.fromBasename(SimpleIncluder.java:185)
        ... 49 more
Caused by: java.io.IOException: resource not found on classpath: application.conf
        at com.typesafe.config.impl.Parseable$ParseableResources.rawParseValue(Parseable.java:579)
        at com.typesafe.config.impl.Parseable$ParseableResources.rawParseValue(Parseable.java:554)
        at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:176)
        ... 52 more

А вот мой файл sbt:

name := """IDTabDriver"""

name in Windows := "IdTabDriver"

packageSummary in Windows := "IdTabDriver"

packageDescription in Windows := "IdTabDriver"

maintainer in Windows := "My Company"

organization := "My Company"

version := "1.0.0.1"

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  cache,
  javaWs,
  "commons-configuration" % "commons-configuration" % "1.10",
  "org.rxtx" % "rxtxcomm" % "2.0-7pre1"
)

Если у кого-то есть идея, я так много пробовал, что не могу найти решение


person Emrys Myrooin    schedule 30.06.2015    source источник
comment
Это происходит при сборке или при запуске (после установки)? Какую версию игры вы используете? (Вы используете play run или activator run для локального запуска?)   -  person Peanut    schedule 30.06.2015
comment
Это происходит во время выполнения, поэтому при запуске после установки. Я запускаю его со сгенерированным файлом idtabdriver.bat. Когда я запускаю его в своей среде разработки (в IntelliJi), он работает очень хорошо. Я с Play 2.3   -  person Emrys Myrooin    schedule 30.06.2015
comment
Можете ли вы проверить версию java на сервере и на вашей локальной машине?   -  person Peanut    schedule 30.06.2015
comment
Я запускаю это приложение на своей машине. Но у меня есть 2 версии Java (для целей разработки), кто может узнать, какая версия используется?   -  person Emrys Myrooin    schedule 30.06.2015


Ответы (2)


Я также столкнулся с той же ошибкой, жалуясь, что ресурс application.conf не найден в пути к классам. Это может быть связано с известной ошибкой в sbt- Плагин для игры. Пока не будет выпущено последнее исправление ошибки, попробуйте добавить следующую строку в файл build.sbt как обходной путь, предложенный командой разработчиков Play.

PlayKeys.externalizeResources := false

Это сработало для меня.

person mmizutani    schedule 23.08.2015

Если вы просто используете то, что поставляется с Play, то все, что вам нужно запустить, это dist в консоли SBT.

Затем найдите в target/universal заархивированный файл. При распаковке запустите файл .bat в папке bin.

person BAR    schedule 18.08.2015