web-dev-qa-db-ja.com

Maven Jettyが「複数の場所からスキャンされた」という警告をスパム送信する

同様の質問 here が見つかりましたが、それは私が使用していないプラグインを指しています(maven-failsafe-plugin)、およびソリューションが参照している構成は私には適用されません。

問題は、私のjettyプラグインを

<groupId>org.Eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.9.v20160517</version>

<version>9.4.11.v20180605</version>、次のような数百の警告をスパムし始めました

[WARNING] org.Apache.axis2.description.Java2wsdl.bytecode.ClassReader scanned from multiple locations: jar:file:///C:/Users/a0763323/.m2/repository/org/Apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1.jar!/org/Apache/axis2/description/Java2wsdl/bytecode/ClassReader.class, jar:file:///C:/Users/a0763323/.m2/repository/it/aon/WSInfocar/1.2/WSInfocar-1.2.jar!/org/Apache/axis2/description/Java2wsdl/bytecode/ClassReader.class
[WARNING] org.Apache.axis2.description.Java2wsdl.bytecode.MethodTable scanned from multiple locations: jar:file:///C:/Users/a0763323/.m2/repository/org/Apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1.jar!/org/Apache/axis2/description/Java2wsdl/bytecode/MethodTable.class, jar:file:///C:/Users/a0763323/.m2/repository/it/aon/WSInfocar/1.2/WSInfocar-1.2.jar!/org/Apache/axis2/description/Java2wsdl/bytecode/MethodTable.class
[WARNING] org.Apache.axis2.description.Java2wsdl.bytecode.ParamNameExtractor scanned from multiple locations: jar:file:///C:/Users/a0763323/.m2/repository/org/Apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1

私はあらゆる場所を検索しましたが、それが何を意味するのか、これを解決する方法も理解できません。

IntelliJとMavenコンパイラプラグインを使用しています

<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>

ありがとう

10
Leviand

分解してみましょう...

[警告]複数の場所からスキャンされたorg.Apache.axis2.description.Java2wsdl.bytecode.ClassReader:

  • jar:file:/// C:/Users/a0763323/.m2/repository/org/Apache/axis2/axis2-kernel/1.4.1/axis2-kernel-1.4.1.jar!/ org/Apache/axis2/description/Java2wsdl/bytecode/ClassReader.class、
  • jar:file:/// C:/Users/a0763323/.m2/repository/it/aon/WSInfocar/1.2/WSInfocar-1.2.jar!/org/Apache/axis2/description/Java2wsdl/bytecode/ClassReader.class

クラスorg.Apache.axis2.description.Java2wsdl.bytecode.ClassReader 2つの異なるJARから(そして2つの異なるバージョンに見えるように!)

ファイルシステムのパスから判断すると、おそらく次のMaven依存関係があります...

<dependency>
  <groupId>org.Apache.axis2</groupId>
  <artifactId>axis2-kernel</artifactId>
  <version>1.4.1</version>
</dependency>

<dependency>
  <groupId>it.aon.WSInfocar</groupId>
  <artifactId>WSInfocar</artifactId>
  <version>1.2</version>
</dependency>

同じクラスの2つの異なるバージョンをクラスパス/クラスローダーに置くことは極端に賢明ではありません(1つのバージョンを使用して、それを理解できないか使用できない他のバージョンの別のクラスに渡すのは非常に簡単です)それ)

どちらを使用するかを手動で解決する必要があります。 WSInfocarの開発者に、なぜ自分たちのアーティファクトにも軸をバンドルしているのか尋ねてみてください。

2
Joakim Erdfelt

私はこの問題の解決策を1日中見つけています。突堤のWARNログを無視したい場合は、これを試すことができます。

--exec
-Dorg.Eclipse.jetty.annotations.AnnotationParser.LEVEL=OFF

これらのコードをstart.ini jettyファイル、およびjettyを再起動します。

1
Pengwei Chen

私はこの質問を見つけ、最も役に立ちました。 JDTコアおよびJava Eclipseコンパイラーと競合しました。プロパティに移動し、Javaコンパイラーを1つずつ変更してテストしました。 JRE 1.8の使用からJRE 11ランタイムへの変更は、テストしたすべてのもののどこかでそれを解決しました。

チェックしました:プロジェクト固有の設定を有効にするデフォルトのコンプライアンス設定を使用(1.8)

これにより、通知が表示されます。1.8準拠を選択する場合は、互換性のあるJREをインストールしてアクティブ化してください(現在は11)。インストールされているJREまたは実行環境を構成するか、ビルドパスを変更します。

繰り返しますが、一度に1つずつ変更してからテストします。 Java= 11はJREを同梱していないため、1.8 JREを使用しました。それでも、その点についてははっきりしません。