编译apache james server 2.3.1时无法使用HashMap

时间:2016-05-16 19:52:31

标签: java sql james

我无法使用同步的HashMap,因为james apache server 2.3.1似乎不允许这样做。

这是我收到的错误消息:

error: generics are not supported in -source 1.4
Map<String, String> list = new HashMap<String, String>();
       ^
(use -source 5 or higher to enable generics)
1 error
1 warning

这是我在代码中使用它的较短版本。我基本上只是将一些SQL结果存储到此列表中。

try {
    conn = ......);
    String SQL = "SELECT * FROM list";

    getListRS = conn.prepareStatement(SQL);

    ResultSet rsListResult = getListRS.executeQuery();

    Map<String, String> list = new HashMap<String, String>();

    while (rsListResult.next()) {
        list.put(rsListResult.getString(0), rsListResult.getString(1));
    }

    rsListResult.close();
    conn.close();
} 
catch (SQLException se) {
    se.printStackTrace();
}
catch (Exception e) {
    e.printStackTrace();
}
finally {
    try {
        if (getListResult != null) {
            getListResult.close();
        }
    }
    catch (SQLException se2) {
        se2.printStackTrace();
    }
    try {
        if (conn != null) {
            conn.close();
        }
    }
    catch (SQLException se) {
        se.printStackTrace();
    }
}

if (this.list.containsKey(mail.getSender()+"="+mail.getRecipients())) {
    System.out.println(list);
    return mail.getRecipients();
} else {
    System.out.println(listlist);
    return null;
}

由于詹姆斯不让我编译,我可以使用哪些其他列表来实现这一目标。

错误发生在这里:

      <javac destdir="${build.classes}" debug="${debug}" optimize="${optimize}" deprecation="${deprecation}" target="${jdk.target}" source="${jdk.source}">

2 个答案:

答案 0 :(得分:2)

由于在Java 1.5中引入了泛型,现在你所能做的就是使用原始的HashMaps并使用大量的检查和强制转换

但最好的办法是升级你的java版本

答案 1 :(得分:1)

这是java编译器的错误。 在ant中,您可以在javac标记中定义源级别,例如:

<javac target="1.5" source="1.5" .....>

(或者,检查jdk.targetjdk.source的default.properties文件,并将其更改为1.5。)

使用至少1.5级允许泛型。

顺便说一句。要查看您拥有的Java版本,可以在转到jdk bin文件夹时调用java -version