用于更新Session变量的java.lang.NoSuchMethodError

时间:2014-08-14 11:57:48

标签: java

java.lang.NoSuchMethodError: java.util.Map.replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    iland.client.ClientAction.update(ClientAction.java:82)

我的行动代码

dao.update(cl);
Map session = ActionContext.getContext().getSession();
session.replace("client", cl);

此处cl

Client cl = new Client();

我正在使用客户端对象更新我的数据库,更新后我正在用代码

更新会话变量
session.replace("client", cl);

此代码在我的本地主机中正常运行,但在服务器中部署后,它显示异常。

如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

会话映射中没有名为replace()的方法(或生成映射到java 7)。 你只需要做

  dao.update(cl);
  Map session = ActionContext.getContext().getSession();
  session.put("client", cl);

地图以这种方式工作,如果存在密钥,put(key, value)将覆盖该值,否则它将创建一个新条目。

答案 1 :(得分:0)

直到java 8才添加

replace(),但您可以使用put来执行相同的操作。 From official documentation

V put(K key, V value)

Associates the specified value with the specified key in this map (optional operation).
If the map previously contained a mapping for the key, the old value is replaced by the specified value.
(A map m is said to contain a mapping for a key k if and only if m.containsKey(k) would return true.)

答案 2 :(得分:0)

java.util.Map.replace()方法只是因为java 1.8我猜,检查服务器的jdk版本