10

「mvn install」を実行しようとすると、この関数が奇妙なエラーをスローします

public <T> T get(final AN_ENUM key)
{
    return some_map.get(key);
}

これは、エラーが発生する行です

final int value = get(AN_ENUM.A_FIELD);

そして、これはmavenのエラーです:

XXX.java:[25,41] type parameters of <T>T cannot be determined; 
  no unique maximal instance exists for type variable T with 
  upper bounds int,java.lang.Object

私はすでに「それを修正する」方法を知っています。最後のコード サンプルで を変更するだけで、バグはなくなりintます。Integer型パラメーターを使用すると、何らかの理由で、整数を int としてキャストできないことがわかります。

私の質問は..なぜですか?

Eclipse では、同じ JDK を使用して、何のトラブルも警告もなしにアプリケーションを実行できました。

  • JDK1.6
  • Eclipse インディゴ サービス リリース 2
  • Maven 3.0.4
4

2 に答える 2

11

同様の問題があり、「ブール」(オブジェクト)ではなく「ブール」(プリミティブ)を返そうとしていたことがわかりました。「int」(プリミティブ)に設定しようとしているため、失敗します。

「int」を「Integer」に変更してみてください。うまくいけば、修正されるはずです。

于 2013-02-07T15:13:23.020 に答える
3

pom.xmlで、ターゲット バージョンを少なくとも 1.5​​ に設定します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
    </configuration>
</plugin>

このように、Maven は JDK 1.5 を使用します (または、必要に応じて 1.6 に設定できます)。

于 2012-07-31T22:26:23.767 に答える