Play2.5.6にて、stageコマンドでデプロイされた実行ファイルをたたくと、Nettyサーバが起動。
そこまではrunと一緒。
アプリにアクセスした際に、htmlからaseetsのリクエストで実行時例外が出てしまう。
runコマンドでは問題なくレスポンスが返ってくる。
なぜstageコマンドで生成されたものは実行時例外が発生してしまうのか?
以下例外メッセージを貼付
@71im61p9g - Internal server error, for (GET) [/assets/javascripts/login.js] -> play.api.UnexpectedException: Unexpected exception[CompletionException: java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String;] at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:276) at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206) at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160) at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188) at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:98) at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100) at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99) at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:344) at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:343) at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) Caused by: java.util.concurrent.CompletionException: java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String; at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292) at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308) at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593) at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1969) at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21) at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18) at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:63) Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String; at play.api.mvc.ActionBuilder$$anon$2.apply(Action.scala:463) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:112) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:112) at play.utils.Threads$.withContextClassLoader(Threads.scala:21) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:111) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:110) at scala.Option.map(Option.scala:146) at play.api.mvc.Action$$anonfun$apply$2.apply(Action.scala:110) at play.api.mvc.Action$$anonfun$apply$2.apply(Action.scala:103) at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251) Caused by: java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String; at play.api.libs.Codecs$.sha1(Codecs.scala:35) at controllers.AssetInfo$$anonfun$5$$anonfun$apply$3.apply(Assets.scala:193) at controllers.AssetInfo$$anonfun$5$$anonfun$apply$3.apply(Assets.scala:193) at scala.Option.map(Option.scala:146) at controllers.AssetInfo$$anonfun$5.apply(Assets.scala:193) at controllers.AssetInfo$$anonfun$5.apply(Assets.scala:193) at scala.Option.orElse(Option.scala:289) at controllers.AssetInfo.<init>(Assets.scala:193) at controllers.Assets$$anonfun$controllers$Assets$$assetInfoFromResource$1$$anonfun$apply$4.apply(Assets.scala:293) at controllers.Assets$$anonfun$controllers$Assets$$assetInfoFromResource$1$$anonfun$apply$4.apply(Assets.scala:290) [error] application -
【追記】
どうやら外部jarのcommons-codecへのクラスパスが通っていないようです。
しかし実行シェルを確認すると、commons-codecへの
クラスパスは正しく設定しているように見えます。
あなたの回答
tips
プレビュー