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

我已经知道如何“修复它”。我只需要在我的最后一个代码示例中更改为intInteger错误就消失了。它告诉我,当我使用类型参数时,由于某种原因,maven 无法将 Integer 转换为 int。

我的问题是..为什么?

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

  • JDK 1.6
  • Eclipse Indigo 服务版本 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 回答