私はプロジェクトBに依存するプロジェクトAをプロジェクトCに依存しています。プロジェクトCはHibernate(より正確にはorg.hibernate:hibernate-core:3.6.8.Final)に依存しています。プロジェクトBは、休止状態のアーティファクトに依存しません。しかし、プロジェクトAはこの成果物に依存しますが単体テストのためだけです。したがって、私はテストスコープを使用します。私はAを構築しようとすると、CとBが正しく構築され、インストールされているプロジェクトが、私はコンパイル時に次のエラーを取得する:Mavenでの奇妙なコンパイルエラー
Failure executing javac, but could not parse the error: myPackage\MyClass.class(myPackage:MyClass.class): warning: Cannot find annotation method 'value()' in type 'org.hibernate.annotations.Cascade': class file for org.hibernate.annotations.Cascade not found An exception has occurred in the compiler (1.6.0_27). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you. com.sun.tools.javac.code.Symbol$CompletionFailure: class file for org.hibernate.annotations.CascadeType not found
I MyClassのは、Cおよび輸入をプロジェクトに属していることを正確org.hibernate.annotations.Cascade 。そしてCは正常にコンパイルして、上記のクラスを見つけることができます。 しかし、ここでは、コンパイル中にクラスファイルが見つからないようです。おそらく、Hibernateに対するテストスコープの依存関係が、CのHibernate依存関係を取り消すかもしれないと思いましたか?しかし、私は分かりません。
また、プロジェクトAの依存関係の範囲をテストからコンパイルに変更すると、問題は解決します。
ご協力ありがとう
私たちが望むものは正確にはわかりません。コンパイラのバグを発見したので、それを報告してください。 –
これはコンパイラのバグですか?私のコードの問題によるコンパイルエラーではありませんか? –
「コンパイラで例外が発生しました...バグを報告してください...」というメッセージが表示されますので、あなたの責任ではありません! –