問題タブ [maven-war-plugin]
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.
java - Weblogic 10.3 クラスローダの問題
概要
アプリケーションが構造的に変更されていないか、コードが変更されていないため、クラスパスの問題が発生しています。変更されたのは、それが組み込まれた環境 (新しいソラリス ボックス) だけです。
アプリケーション サーバー: weblogic 10.3
Maven-war-プラグイン: 2.3
エラー
アプリケーション戦争内には、同じクラスの異なるバージョンを持つ 2 つの依存関係があり、1 つのバージョンには特定のコンストラクターがありません...これがどこに向かっているのかがわかります。クラスの間違ったバージョン (コンストラクターがない) がターゲットにされているため、実行時エラーが発生しています。
これはMavenプロジェクトであり、依存関係は、コンパイル時にこのクラスの正しいバージョンが最初にクラスパスに表示されるように順序付けられています。
現在わかっている限り、変更されたのは、ビルド部門が war ファイルをビルドする新しいビルド ボックスだけです。
テスト完了
自分のローカル環境 (Windows) で war を作成し、それを weblogic 環境サーバー (UNIX ボックス) にデプロイしても問題ありません。
ただし、ビルド ボックス (solaris) でビルドし、同じ環境にデプロイすると、問題が発生します。
2 つの war ファイルを比較しましたが、違いはありません。
私が疑ったこと(クラスパスで最初に間違ったクラスにヒットしたこと)を確認するために、間違ったバージョンを除いてパッケージをビルドしましたが、驚くべきことにそれが機能しました。Weblogic クラスローダは明らかに、この不適切なクラスを他のクラスよりも先にロードしています。
問題はまだ残っているので、これが突然発生する原因を特定する必要があります。
質問
libのどの依存関係を最初にロードするかを決定するという点で、weblogicのクラスローダーのルールは何ですか?
そして、マニフェストのバージョン番号を除いてまったく同じである 2 つの異なる戦争の間で、この動作がどのように変更された可能性があるのでしょうか?
どうもありがとう、
ユーザー編集
要求された Maven 依存関係ツリー:
cdm.jar
には、正しいバージョンである FactorValueLite というクラスが含まれており、その中にmotorratingservice-java-client.jar
間違ったバージョンであるこのクラスも存在します。この jar が最初にクラスパスにロードされているようです。
eclipse - ローカルサーバーでEclipse m2e webappプロジェクトを実行するには?
依存関係を管理するために、m2e を使用してシンプルな webapp を maven プロジェクトとして作成しようとしていますが、Eclipse からプロジェクトを実行できないため、何か不足しているに違いありません。
もう少し文脈を置くために、ここに私がしていることがあります:
まず、「Maven プロジェクト」の作成を選択します。
次に、「maven-webapp-archetype」を選択します
最後に、次のステップの基本的なプロジェクト情報フォームに入力し、プロジェクトの作成を完了します。この時点ですべてが正常に見えます。
問題は、プロジェクトを実行しようとすると、ローカル サーバーでプロジェクトを実行するのに適したものが見つからないことです。
また、ローカル サーバーの [追加と削除...] コンテキスト メニュー エントリから、プロジェクトが Web プロジェクトのリストに表示されません。
セットアップの手順を間違えましたか、それともプロジェクトを開始するための他の適切な方法はありますか?
maven - 一部の JAR を WEB-INF/lib にコピーしない Maven
Eclipse で Maven を使用して Web プロジェクトを作成しました。プロジェクトには pentaho ライブラリ jar が必要で、これが私の依存関係です
mvn:compile
またはを実行するmvn eclipse:eclipse
と、JAR ファイルがmaven_repo
ローカル ディレクトリにダウンロードされます。次の war プラグインを使用しています。
問題は、mvn war:war
war ファイルを作成するために実行すると、libbase-1.2.8.jar が WEB-INF/lib フォルダーにコピーされないことです。しかし、他のすべての JAR ファイルをコピーしています。何が問題ですか?
maven - Mavenでは、使用されているクラスパスをどのように出力しますか?
私の現在の目的のために、war
ファイルを作成する Maven プロジェクトがあり、 war
. プロジェクト全体をコンパイルすることなく、単一のコマンドでそれを行う方法はありますか?
1 つのアイデアは、Maven にtarget/classpath.properties
ファイルを生成させ、その時点で停止させることです。
google-app-engine - appengine-maven-plugin はバックグラウンドで maven-war-plugin を持っていますか? 自分で定義すると2回呼び出されます
私は多くのことを試しましたが、私のプロジェクトは "maven-war-plugin" を 2 回実行しているようです。
このため、すべてのクラスを 1 つの jar にマージするような最適化を実行できません (Maven シェード プラグインを使用)。
appengine-maven-plugin が maven-war-plugin を呼び出して appengine パッケージを作成していることは確かです。「maven-war-plugin」の独自の定義を削除しようとしたため、それはまだ「魔法のように」実行されているためです。そんな状態になっても意味ないの?
私の pom.xml は次のとおりです。