错误:在Maven Install </t>期间无法确定<t> T的类型参数

时间:2012-07-31 18:54:06

标签: java eclipse maven jdk1.6

当我尝试执行“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,然后该错误就会消失。它告诉我maven因某种原因在使用类型参数时无法将Integer转换为int。

我的问题是......为什么?

在eclipse中,使用相同的JDK,我已经能够运行我的应用程序,没有任何麻烦或警告。

  • JDK 1.6
  • Eclipse Indigo Service Release 2
  • Maven 3.0.4

2 个答案:

答案 0 :(得分:11)

我有一个类似的问题,事实证明我试图返回一个“布尔”(原始)而不是“布尔”(对象)。由于您尝试将其设置为“int”(原始),因此最终会失败。

尝试将“int”更改为“Integer”,希望能解决它。

答案 1 :(得分: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)。