問題タブ [uberjar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1509 参照

java - Spring Boot ファット jar の NoClassDefFoundError ですが、依存関係はコンパイル済みアーカイブにあり、アプリケーションは IDE で正常に動作します

更新:解決済み

何らかの理由で、 を拡張するカスタム クラスをロードするために使用していたクラス ローダーには、GenModel予期していなかった、既にロードされているクラスのコンテキストがありませんでした。そのためGenModel、デバッグの観点からはロードされていましたが、私modelLoaderの観点からはロードされていませんでした。

解決策:URLClassLoaderインスタンスに親コンテキストを渡すことができます。GenModel渡すコンテキストが正確にわからないので、すでにロードされていることがわかっているクラスのコンテキストを取得し、そのコンテキストには明らかに が含まれていると考えましたGenModel。そのため、最終的にコードを 1 行だけ変更しました。

なりました

そしてそれはそれを解決しました!

@EvilToad に声をかけてください。コメントを通じて私を正しい軌道に乗せてくれました!

元の問題:

コンパイル済みの h2o ニューラル ネットワーク モデルを Web サービスとして実装し、実行時にモデルを注入するプロトタイプを構築しています。このアプリは、Spring Boot が組み込まれた Tomcat サーバーで実行され、Maven プロジェクトです。Maven POM には次の依存関係があります。

この依存関係には class が含まれますhex.genmodel.GenModel。アプリケーションが起動すると、 を使用してカスタム モデル クラスがロードURLClassLoaderされ、 としてキャストされますGenModel。関連するコードは次のとおりです。

...

そして、ここに私のPOMがあります:

次の IntelliJ 構成を使用してアプリケーションを作成して実行すると、すべてがうまく動作します。

IntelliJ 実行構成

すべてがロードされ、サーバーが期待どおりに起動し、すべての機能が動作します。

一方、mvn clean installorpackageを実行すると問題なくビルドされますが、 を実行するjava -jar <myjarartifact>と、アプリケーションは例外をスローします。

...Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.----.research.machinelearning.neuralnets.NeuralNetPredictor]: Factory method 'neuralNetPredictor' threw exception; nested exception is java.lang.NoClassDefFoundError: hex/genmodel/GenModel

...Caused by: java.lang.NoClassDefFoundError: hex/genmodel/GenModel

...Caused by: java.lang.ClassNotFoundException: hex.genmodel.GenModel

ここに私を驚かせる部分があります: スプリング ブートによって生成されたファット jar の中を見ると、hex.genmodel.GenModel がそこにあり、他の依存関係と何の違いもありません:

ファット jar 依存関係の GenModel クラス

更新: スタック トレースは次のとおりです。

どんな洞察も大歓迎です!

0 投票する
1 に答える
178 参照

scala - Play 用の sbt の Uber (fat) jar から除外! Scalaで

プロプライエタリなハードウェア用のファット jar を含める必要があるプロジェクトがあります。質問しないでください。jar を Central または他のリポジトリに配置するのが最善であることはわかっていますが、そうではありません。:( sbt が管理されていない依存関係として扱うように、lib ディレクトリに配置する必要があります。

しかし、jar には古いバージョンの slf4j が含まれており、いつ Play! 実行すると、静的関数が見つからないというエラーがスローされます (これは、slf4j の新しいバージョンで追加されました)。

これが私が試したことです。

  • force() を使用して libraryDependency を追加しようとしました。サイコロはありません。
  • ここで見つけたいくつかの excludeAll サンプルを試しました。サイコロはありません。
  • 絶望的な気持ちから、jar を解凍し、slf4j を削除して、jar を再度作成しました。It Works! ですが、真剣に、これはプロジェクトを維持するための私の最初の選択ではありません。

sbt ベースの scala または play プロジェクトで管理されていない依存関係である Uber jar 内の何かを除外する方法を知っている人はいますか?

0 投票する
1 に答える
120 参照

heroku - Heroku の Clojure ビルドパックでビルド コマンドを構成する方法は?

Heroku はlein uberjarClojure アプリをビルドするために実行されていますが、実行するには Heroku が必要ですlein ring uberjar。ビルドパックをフォークせずにこれを構成できますか?

lein ring server-headlessスタンドアロンの jar の代わりに、Web プロセスを開始に使用するように設定しようとしましたが、依存関係のインストール中にブート タイムアウトが発生します。

0 投票する
1 に答える
1171 参照

python - uber-jar に相当する Python

Python の世界で uber-jar に相当するものを探しています。

  • 3 つの主要なプラットフォーム (Windows、Mac、Linux) すべてに Python パッケージを配布する必要があります。
  • ターゲット プラットフォームにはインターネットがない可能性があるため、すべての依存関係をバンドルする必要があります。
  • クロスプラットフォームのディストリビューションでなければならないので、複数のターゲット向けにビルドする必要はありません。つまり、次のようにすべてのプラットフォームで実行できるはずです。

    python package.ext

パッケージは純粋な python (ネイティブ コードなし) であると想定できます。 これらの要件を満たすものはありますか?

次のオプションを知っていますが、それぞれに欠陥があります。

  • .whlpipインストールに必要なパッケージ。
  • .eggすべてのパッケージの依存関係を含むを作成する方法がわかりません。
  • この PEP: http://legacy.python.org/dev/peps/pep-0441は、python が実行.zip中のファイルをサポートしていることを示していますが、AFAICT、そのような zip を作成するための最適なツールは pex ( https://github.com/pantsbuild /pex )、これは Windows をサポートしていないと思います
0 投票する
1 に答える
2787 参照

apache-spark - Spark 2.0.0 でジョブをサブミットするためにまだファット jar を作成する必要がありますか?

Spark 2.0.0 のリリースノートには、次のように書かれています。

Spark 2.0 では、本番環境のデプロイにファット アセンブリ jar が不要になりました。

  • これは、ジョブをサブミットするためにもうファット jar を作成する必要がないということですか?

  • はいの場合、どのように?したがって、ここのドキュメントは最新ではありません。