(これをインタラクティブな回答にします。まだ回答がありません。)
ちょっとトリッキー。依存関係のバージョンを調べることができる Ning プラグインは知っていますが、クラス ファイルのバージョンを確認するオプションはありませんでした。リンクされたクラスのバージョンが新しすぎると、 javac が文句を言うことはわかっています。Maven の出力をトレースして、javac オプションを確認できますか?
エラーが発生しても、100% 安全というわけではありません。ここでスペースが不足しているため、回答を投稿する必要があります。これは私が遭遇した逸話的なアカウントです。Java 1.4 と Java 5 を特徴としていますが、それでも問題が発生する理由を明確にするのに役立ちます。
この逸話は、ライブラリを消費者と同じ (またはそれよりも低い) レベルに維持し、常に適切な JDK でコンパイルするように努めるべきであるという意見を裏付けるのに役立ちます。
とにかく、ここに行きます。new java.math.BigInteger(1)
Java 1.4の行をコンパイルするとします。1.4 ターゲットで Java 5 コンパイラを使用しているため、すべてが適切に聞こえます。しかし、Java 5 コア ライブラリには引数BigInteger
を取るコンストラクタが含まれてint
いるため、クラスはそのコンストラクタへの参照を使用して構築されます。残念ながら、Java 1.4 にはこのバージョンのBigInteger
コンストラクターがないため、後でこのコードを 1.4 JVM で実行すると、ランタイム エラーが発生します。適切な Java 1.4 コンパイラーで起こったであろうことは、int
toからの内部キャストdouble
がコンパイラーによって生成され、double を取る適切なコンストラクターを提供することです。