NoSuchMethodError: FluentStringsMap.add() thrown at runtime after switching to current snapshot.

Just updated to the current snapshot and on running a simulation (1 user) that previously worked fine, am getting the error below. Did something change that hasn’t been added to the wiki yet? (Or break? :S) I’m not sure exactly when I downloaded the snapshot I was using previously, but it’s been at least 5 days.

Uncaught error from thread [GatlingSystem-akka.actor.default-dispatcher-8] shutting down JVM since ‘akka.jvm-exit-on-fatal-error’ is enabled for ActorSystem[GatlingSystem]
java.lang.NoSuchMethodError: com.ning.http.client.FluentStringsMap.add(Ljava/lang/String;Ljava/lang/String;)Lcom/ning/http/client/FluentStringsMap;
at io.gatling.http.request.builder.package$HttpParams$$anonfun$update$1$1$$anonfun$apply$8.apply(package.scala:71)
at io.gatling.http.request.builder.package$HttpParams$$anonfun$update$1$1$$anonfun$apply$8.apply(package.scala:70)
at io.gatling.core.validation.Success.map(Validation.scala:32)
at io.gatling.http.request.builder.package$HttpParams$$anonfun$update$1$1.apply(package.scala:70)
at io.gatling.http.request.builder.package$HttpParams$$anonfun$update$1$1.apply(package.scala:69)
at io.gatling.core.validation.Success.flatMap(Validation.scala:33)
at io.gatling.http.request.builder.package$HttpParams$.update$1(package.scala:69)
at io.gatling.http.request.builder.package$HttpParams$.resolveFluentStringsMapRec$1(package.scala:101)
at io.gatling.http.request.builder.package$HttpParams$.resolveFluentStringsMap$extension(package.scala:107)
at io.gatling.http.request.builder.HttpRequestWithParamsExpressionBuilder.configureAsParams$1(HttpRequestWithParamsExpressionBuilder.scala:34)
at io.gatling.http.request.builder.HttpRequestWithParamsExpressionBuilder.configureParts(HttpRequestWithParamsExpressionBuilder.scala:47)
at io.gatling.http.request.builder.HttpRequestExpressionBuilder$$anonfun$configureRequestBuilder$2.apply(HttpRequestExpressionBuilder.scala:74)
at io.gatling.http.request.builder.HttpRequestExpressionBuilder$$anonfun$configureRequestBuilder$2.apply(HttpRequestExpressionBuilder.scala:74)
at io.gatling.core.validation.Success.flatMap(Validation.scala:33)
at io.gatling.http.request.builder.HttpRequestExpressionBuilder.configureRequestBuilder(HttpRequestExpressionBuilder.scala:74)
at io.gatling.http.request.builder.RequestExpressionBuilder$$anonfun$build$1$$anonfun$apply$5.apply(RequestExpressionBuilder.scala:134)
at io.gatling.http.request.builder.RequestExpressionBuilder$$anonfun$build$1$$anonfun$apply$5.apply(RequestExpressionBuilder.scala:133)
at io.gatling.core.validation.Success.flatMap(Validation.scala:33)
at io.gatling.http.request.builder.RequestExpressionBuilder$$anonfun$build$1.apply(RequestExpressionBuilder.scala:133)
at io.gatling.http.request.builder.RequestExpressionBuilder$$anonfun$build$1.apply(RequestExpressionBuilder.scala:118)
at io.gatling.http.request.HttpRequestDef.build(HttpRequest.scala:87)
at io.gatling.http.action.HttpRequestAction.sendRequest(HttpRequestAction.scala:83)
at io.gatling.http.action.RequestAction$$anonfun$executeOrFail$1.apply(RequestAction.scala:41)
at io.gatling.http.action.RequestAction$$anonfun$executeOrFail$1.apply(RequestAction.scala:39)
at io.gatling.core.validation.Success.flatMap(Validation.scala:33)
at io.gatling.http.action.RequestAction.executeOrFail(RequestAction.scala:39)
at io.gatling.core.action.Failable$class.execute(Actions.scala:71)
at io.gatling.http.action.RequestAction.execute(RequestAction.scala:33)
at io.gatling.core.action.Action$$anonfun$receive$1.applyOrElse(Actions.scala:29)
at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:166)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)
at akka.actor.ActorCell.invoke(ActorCell.scala:456)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237)
at akka.dispatch.Mailbox.run(Mailbox.scala:219)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:385)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

Update: narrowed down the request it’s coming from (not the first one). “hello” never gets printed (but if I put a session function immediately before here, it executes).

exec(
http(“login”)
.post("/j/eng/myapp_login")
.headers(Headers.header1)
.param(“token1”, “${uid}”)
.param(“token2”, “${password}”)
.param(“button”, “Log+In”)
.check(
regex("${checkRegex}"),
regex(“foo=(e\d+s\d+)”).dontValidate.saveAs(“foo”)
)
.extraInfoExtractor((reqName:String, status:Status, session:Session,
req:Request, resp:Response) => {
println(“hello”)
List(“Submitting login credentials”,
"Username: " + session(“uid”).as[String],
"Password: " + session(“password”).as[String])
})
)

Solved: Always make sure you remove old .jar files from lib/ instead of just copying the new ones in; if the version changes, the old file won’t be overwritten and lib/ will have 2 different versions of the .jar(s), potentially causing conflicts.