MAVENコンパイルパッケージ時報「…記号が見つからない」の処理方法まとめ
6190 ワード
この間違いはすべてMAVENプラグインがコンパイル中に報告されたので、問題はコンパイルの一環にあるに違いない.
この時はMAVENのコンパイル構成をしっかりチェックして、
1、コンフィギュレーションのコンパイルバージョンとネイティブ環境でコンフィギュレーションされているjavaバージョンが一致しているかどうかを見てみましょう.エラーが発生したクラスは、別のMAVENモジュールのコードを参照している可能性があります.また、そのモジュールのバージョンコンフィギュレーションコードが一致しているかどうかも見てみましょう.しかし、これは一定ではありません.一致しなくても問題はありませんが、これは注意できる点です.
たとえば、次のような場合です.
2、エラーを報告したクラスに別のMAVENモジュールを引用したコードがある場合は、このモジュールのパッケージを打つ前に、その参照するMAVENモジュールをコンパイルしてパッケージ化したほうがいいです.
3、プラグインのバージョンをコンパイルする問題かもしれません.例えば、先ほどのMAVENプラグインの構成では、問題が発生したときにバージョンを低くしたり、高くしたりしてからコンパイルしてみてください.
4、コンパイルプラグインに他のプラグインが参照されているかどうかも見てみましょう.例えば、次のような場合です.
ここのコンパイルプラグインはmapstruct依存も参照しているので、この参照の依存バージョンに問題があるかどうかを確認するには、他のバージョンを交換してみてください.
最近私が出会った問題の一つはここにあることです.私の工事の中で1つのDTO類があって、それから別のimpl類の中でこのDTO類のある属性のset方法を呼び出すことができて、このimpl類をコンパイルする時、記号が見つからないことを報告して、間違った位置を報告するのはこのset方法の位置です.その後、いろいろな方法を試してもだめだったが、mapstructのバグだったことに気づいた.もし私のこのDTOクラスのgetterとsetterメソッドの順序が属性の順序と一致しなければ、コンパイルに失敗する.例えばクラスの中の属性はまずnameで、次の行はageで、次の行はhabbitで、getter、setter方法もこの順序で、まずnameのgetter、setter方法、それからageのgetter、setter方法などです.私はgetterグループを持っています.setterメソッドの順序が間違っているので、コンパイルが間違っています.これは本当に穴があいています.
だからこれらのオープンソースのプラグインを使って、できるだけ安定したバージョンを使って、さもなくばどのようにとても穴があいています.
5、簡単に乱暴に「Maven Update Project」を使うと、この方法はほとんどの場合のこの問題を解決することができます.
以上が最近のまとめですが、不適切な点があれば、指摘を歓迎します.
転載は出典を明記してください.http://www.cnblogs.com/Starshot/p/7441075.html
この時はMAVENのコンパイル構成をしっかりチェックして、
1、コンフィギュレーションのコンパイルバージョンとネイティブ環境でコンフィギュレーションされているjavaバージョンが一致しているかどうかを見てみましょう.エラーが発生したクラスは、別のMAVENモジュールのコードを参照している可能性があります.また、そのモジュールのバージョンコンフィギュレーションコードが一致しているかどうかも見てみましょう.しかし、これは一定ではありません.一致しなくても問題はありませんが、これは注意できる点です.
たとえば、次のような場合です.
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.3version>
<configuration>
<source>1.7source>
<target>1.7target>
<encoding>UTF-8encoding>
configuration>
plugin>
2、エラーを報告したクラスに別のMAVENモジュールを引用したコードがある場合は、このモジュールのパッケージを打つ前に、その参照するMAVENモジュールをコンパイルしてパッケージ化したほうがいいです.
3、プラグインのバージョンをコンパイルする問題かもしれません.例えば、先ほどのMAVENプラグインの構成では、問題が発生したときにバージョンを低くしたり、高くしたりしてからコンパイルしてみてください.
4、コンパイルプラグインに他のプラグインが参照されているかどうかも見てみましょう.例えば、次のような場合です.
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstructgroupId>
<artifactId>mapstruct-processorartifactId>
<version>${mapstruct.version}version>
path>
annotationProcessorPaths>
configuration>
plugin>
ここのコンパイルプラグインはmapstruct依存も参照しているので、この参照の依存バージョンに問題があるかどうかを確認するには、他のバージョンを交換してみてください.
最近私が出会った問題の一つはここにあることです.私の工事の中で1つのDTO類があって、それから別のimpl類の中でこのDTO類のある属性のset方法を呼び出すことができて、このimpl類をコンパイルする時、記号が見つからないことを報告して、間違った位置を報告するのはこのset方法の位置です.その後、いろいろな方法を試してもだめだったが、mapstructのバグだったことに気づいた.もし私のこのDTOクラスのgetterとsetterメソッドの順序が属性の順序と一致しなければ、コンパイルに失敗する.例えばクラスの中の属性はまずnameで、次の行はageで、次の行はhabbitで、getter、setter方法もこの順序で、まずnameのgetter、setter方法、それからageのgetter、setter方法などです.私はgetterグループを持っています.setterメソッドの順序が間違っているので、コンパイルが間違っています.これは本当に穴があいています.
だからこれらのオープンソースのプラグインを使って、できるだけ安定したバージョンを使って、さもなくばどのようにとても穴があいています.
5、簡単に乱暴に「Maven Update Project」を使うと、この方法はほとんどの場合のこの問題を解決することができます.
以上が最近のまとめですが、不適切な点があれば、指摘を歓迎します.
転載は出典を明記してください.http://www.cnblogs.com/Starshot/p/7441075.html