2017-07-12 4 views
4

私のclojureプロジェクトから、lein uberjarでjarファイルを作成しています。lein-rpmタスクを実行しているときにメソッドエラーが実装されていません

次に、lein-rpmタスクを使用してrpmを作成してから、rpmをサーバーにデプロイしています。

rpmをデプロイした後、java -jarで実行しようとしていますが、次の例外が発生します。

java.lang.IllegalArgumentException: No implementation of method: :route-matches of protocol: #'clout.core/Route found for class: clout.core.CompiledRoute 
     at clojure.core$_cache_protocol_fn.invokeStatic(core_deftype.clj:566) ~[na:na] 
     at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:560) ~[na:na] 
     at clout.core$eval5959$fn__5960$G__5950__5967.invoke(core.clj:39) ~[na:na] 
     at compojure.core$route_matches.invokeStatic(core.clj:46) ~[na:na] 
     at compojure.core$route_matches.invoke(core.clj:44) ~[na:na] 
     at compojure.core$route_request.invokeStatic(core.clj:49) ~[na:na] 
     at compojure.core$route_request.invoke(core.clj:48) ~[na:na] 
     at compojure.core$wrap_route_matches$fn__6362.invoke(core.clj:145) ~[na:na] 
     at compojure.core$wrap_routes$fn__6478.invoke(core.clj:348) ~[na:na] 
     at compojure.api.routes.Route.invoke(routes.clj:74) [na:na] 
     at compojure.api.core$handle$fn__17370.invoke(core.clj:8) ~[na:na] 
     at clojure.core$some.invokeStatic(core.clj:2592) [na:na] 
     at clojure.core$some.invoke(core.clj:2583) [na:na] 
     at compojure.api.core$handle.invokeStatic(core.clj:8) ~[na:na] 
     at compojure.api.core$handle.invoke(core.clj:7) ~[na:na] 
     at clojure.core$partial$fn__533.invoke(core.clj:2515) ~[na:na] 
     at compojure.api.routes.Route.invoke(routes.clj:74) [na:na] 
     at ring.swagger.middleware$wrap_swagger_data$fn__14534.invoke(middleware.clj:33) ~[na:na] 
     at ring.middleware.http_response$wrap_http_response$fn__11869.invoke(http_response.clj:19) ~[na:na] 
     at ring.swagger.middleware$wrap_swagger_data$fn__14534.invoke(middleware.clj:33) ~[na:na] 
     at compojure.api.middleware$wrap_options$fn__15814.invoke(middleware.clj:74) [na:na] 
     at ring.middleware.format_params$wrap_format_params$fn__10747.invoke(format_params.clj:119) ~[na:na] 
     at ring.middleware.format_params$wrap_format_params$fn__10747.invoke(format_params.clj:119) ~[na:na] 
     at ring.middleware.format_params$wrap_format_params$fn__10747.invoke(format_params.clj:119) ~[na:na] 
     at ring.middleware.format_params$wrap_format_params$fn__10747.invoke(format_params.clj:119) ~[na:na] 
     at ring.middleware.format_params$wrap_format_params$fn__10747.invoke(format_params.clj:119) ~[na:na] 
     at compojure.api.middleware$wrap_exceptions$fn__15804.invoke(middleware.clj:43) ~[na:na] 
     at ring.middleware.format_response$wrap_format_response$fn__11767.invoke(format_response.clj:183) [na:na] 
     at ring.middleware.keyword_params$wrap_keyword_params$fn__11907.invoke(keyword_params.clj:36) [na:na] 
     at ring.middleware.nested_params$wrap_nested_params$fn__11955.invoke(nested_params.clj:89) [na:na] 
     at ring.middleware.params$wrap_params$fn__12029.invoke(params.clj:67) [na:na] 
     at compojure.api.middleware$wrap_options$fn__15814.invoke(middleware.clj:74) [na:na] 
     at compojure.api.routes.Route.invoke(routes.clj:74) [na:na] 
     at clojure.lang.Var.invoke(Var.java:379) [supply-planning-api-service-standalone.jar:na] 
     at compojure.core$routing$fn__6377.invoke(core.clj:185) [na:na] 
     at clojure.core$some.invokeStatic(core.clj:2592) [na:na] 
     at clojure.core$some.invoke(core.clj:2583) [na:na] 
     at compojure.core$routing.invokeStatic(core.clj:185) [na:na] 
     at compojure.core$routing.doInvoke(core.clj:182) [na:na] 

libと環境の詳細

レイン-RPM - 0.0.5

OS - CentOSのLinuxの7

私は何をしないのですか?

編集:Mrinalさんのコメント@を1として

私は、RPMのビルド前と後のjarファイルサイズを確認しました。 rpmからjarファイルを抽出すると、サイズは元のサイズより少し小さくなりました。

答えて

4

私はまったく同じ問題を抱えていました。解決するのに2日間かかりました。

したがって、lein uberjarによって生成されたjarサイズとlein rpmタスクが表示される場合は、それらは異なるでしょう。原因はbrp-java-repack-jarsで、rpmビルド時にjarをパックして再パックする。それはレインuberjarによって作成された瓶を台無しよう

/usr/lib/rpm/redhat/brp-compress 
/usr/lib/rpm/redhat/brp-strip /usr/bin/strip 
/usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump 
/usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip 
/usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 
/usr/lib/rpm/redhat/brp-python-hardlink 
/usr/lib/rpm/redhat/brp-java-repack-jars 

最後のものが問題である:あなたが端末上rpm -E '%{__os_install_post}'を実行する必要があるオプションを表示するには、次のようなものが表示されます。この問題を解決するには、rpmの作成中に__os_install_postオプションを無効にする必要があります。このblogはとてもうまく説明しています。

rpmの手順を削除し、lein uberjarステップで作成した.jarパッケージをサーバーに直接コピーして実行します。しかし、私たちはこの他の選択肢を試してみました。

これが役に立ちます。疑いのある人はコメントにコメントしてください。

+1

すぐにお返事ありがとうございます。あなたは正しく、brp-java-repack-jarsだけで問題を引き起こしたので、packageのRPMオプションを削除しました。 – SANN3

+0

うれしい私は助けることができます。 –

関連する問題