Edited at

Play Framework 2.6 で嵌ってる事(sbt run⇒error)

More than 1 year has passed since last update.


【前置き】

前回大体の構成を考えたので実際がしがしコーディングして行こう・・・と思ってた回。

前は気付かなかったがsbt runした後にローカル環境にアクセスした後に落ちていた事が判明した。公式HPにあるサンプルを動作させても同じ現象が置き一日ずっと調べてたが解決策が見つからない為備忘録として残す事に。application.conf周りの設定が悪いような気がするが・・・有識者の方の知恵を借りたい所。


【環境】

java 9.0.4

sbt 1.0.4

scala 2.12.4


【事象】

sbt runをした後 http://localhost:9000/ へアクセスした後sbtがshutdownする。

以下はlog。

2018-03-25 18:36:59,292 [INFO] from play.api.http.EnabledFilters in play-dev-mode-akka.actor.default-dispatcher-4 - Enabled Filters (see <https://www.playframework.com/documentation/latest/Filters>):

play.filters.csrf.CSRFFilter
play.filters.headers.SecurityHeadersFilter
play.filters.hosts.AllowedHostsFilter

2018-03-25 18:36:59,376 [INFO] from play.api.Play in play-dev-mode-akka.actor.default-dispatcher-4 - Application started (Dev)
2018-03-25 18:37:00,133 [ERROR] from akka.actor.ActorSystemImpl in application-akka.actor.default-dispatcher-7 - Uncaught error from thread [application-akka.actor.default-dispatcher-5]: javax/xml/bind/DatatypeConverter, shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[application]
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26)
at io.jsonwebtoken.impl.DefaultJwtBuilder.signWith(DefaultJwtBuilder.java:106)
at play.api.mvc.JWTCookieDataCodec$JWTFormatter.format(Cookie.scala:718)
at play.api.mvc.JWTCookieDataCodec.encode(Cookie.scala:577)
at play.api.mvc.JWTCookieDataCodec.encode$(Cookie.scala:575)
at play.api.mvc.DefaultJWTCookieDataCodec.encode(Cookie.scala:768)
at play.api.mvc.FallbackCookieDataCodec.encode(Cookie.scala:742)
at play.api.mvc.FallbackCookieDataCodec.encode$(Cookie.scala:741)
at play.api.mvc.DefaultSessionCookieBaker.encode(Session.scala:95)
at play.api.mvc.CookieBaker.encodeAsCookie(Cookie.scala:414)
at play.api.mvc.CookieBaker.encodeAsCookie$(Cookie.scala:413)
at play.api.mvc.DefaultSessionCookieBaker.encodeAsCookie(Session.scala:95)
at play.api.mvc.Result.$anonfun$bakeCookies$2(Results.scala:297)
at scala.Option.map(Option.scala:146)
at play.api.mvc.Result.bakeCookies(Results.scala:296)
at play.core.server.common.ServerResultUtils.prepareCookies(ServerResultUtils.scala:225)
at play.core.server.AkkaHttpServer.$anonfun$runAction$5(AkkaHttpServer.scala:323)
at scala.concurrent.Future.$anonfun$flatMap$1(Future.scala:304)
at scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:37)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:91)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:81)
at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:91)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:43)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 31 common frames omitted


【気になる事】

sbt runした後にwarningが出る。(run-support2.12-2-6-12.jarがいない?)


【やりたい事】

エラー落ちせずにコーディングに持って行きたい・・・;


【解決編】※追記

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10141285525

参考記事。

build.sbtに以下を追記する。

libraryDependencies += "javax.xml.bind" % "jaxb-api" % "2.2.12"

新しい環境を作成⇒何かしらのエラーが発生って流れは開発現場の常だと思いたいが。

上記の依存性を追加する事でとりあえず落ちなくなった。協力して頂いた皆様ありがとうございます。

基本じゃねーか!とかだったらすみませぬ、、

application.conf

build.sbt

plugins.sbt

上記周りがplayframeworkで初めて触って非常に知識欠乏病なので、、

来週からがしがし作って嵌って出来ると思うと楽しみですね。


【後書き】

paizaランクがSになりましたので、ようやく趣味開発メインで行けそうです。

未経験OKな自社開発を行ってる企業様とお話しつつ、作っていけたらと思います。

上記のようにフレームワーク知識とかが甘いですがやって行くしかないですね・・・頑張ります。