2016-11-29 9 views
0

Jenkinsで構築されたJavaプロジェクトで名前クラッシュエラーが発生することがあります。Jenkinsビルドで時折javac名のクラッシュエラーが発生する

私はカップルの場所でそれを見てきました

、そしてそれそれは次のような形式は次の両方の場所:

public class Foo { 
    public enum FooEnum { 
     VALUE1("Val1"), 
     VALUE2("Val2) 

     private FooEnum(String) { /*code*/} 
    } 
} 

とエラー出力は言う:

[javac] /path/Foo.java:6: error: name clash: FooEnum(String) and FooEnum(String) have the same erasure 
[javac] private FooEnum(String) 
       ^

注のみが存在することFooEnumという名前のメソッドがあります。そのため、型の削除などの問題はありません。この方法は、何らかの形でそれ自身と矛盾しているようです。

私はEclipseでコードを開発し、私のコードベースは同じワークスペース内の複数のEclipseプロジェクトにまたがっています。私のJenkinのパイプラインには、Eclipseプロジェクトごとに仕事があります。

各プロジェクトが終了すると、プロジェクトディレクトリ全体(ソースファイルと.classファイルを含む)がアーカイブされます。ダウンストリームのプロジェクトはアーカイブされたオブジェクトを前のビルドからコピーして、それらを依存関係として使用できるようにします。

私はEclipseから自動生成されたant build.xmlファイルを使用しています。

これらのエラーは頻繁に表示されませんが、そうしたエラーが発生すると、通常、数回のビルドに耐えてから離れます。私は、いつ発生するのか、そうでないのかを示すパターンを見つけ出すことができませんでした。

私はEclipse内でビルドするときに一度も問題がなかったので、問題は私のJenkinsセットアップやビルドファイルともっと関係があると思います。

残念ながら、私の会社は厳重な専有情報保護方針をとっていますが、実際のコードや実際のantファイルをここで共有するのは少し不安ですが、誰かが私と共有できるアイデアを持っていることを期待していました。

答えて

0

私は、各ジョブに必要な依存関係のプロジェクトを明示的にコピーし、それらのプロジェクトだけをコピーしていることを確認することでこれを解決できました。

以前は、必要な依存関係を持ついくつかのジョブからすべての成果物をコピーすることがありました。私はコピーした複数の仕事に依存関係が見つかった場合に何か変わったことが起こっていたと思う。私はまだ何が起こっているのかをまだ分かっていないが、これは修正されているようだ。

関連する問題