I am migrating my Gatling tests from version 3.1.1 to 3.2.1 and ran into an issue. I am getting java.lang.NoSuchMethodError when running the simulation using 3.2.1 though in 3.1.1 the same test works perfectly. The issue happens only in simulations that use http protocol, jms one works as expected.
Could you please advise what might be wrong?
Exception:
11:13:31.011 [ERROR] i.g.a.Gatling$ - Run crashed
java.lang.NoSuchMethodError: io.gatling.core.Predef$.constantUsersPerSec(D)Lio/gatling/core/controller/inject/open/OpenInjectionSupport$ConstantRateBuilder;
at api.rest.DenyListCustomSimulation.(DenyList.scala:85)
… 11 common frames omitted
Wrapped by: java.lang.reflect.InvocationTargetException: null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at io.gatling.app.Runner.run0(Runner.scala:74)
at io.gatling.app.Runner.run(Runner.scala:60)
at io.gatling.app.Gatling$.start(Gatling.scala:73)
at io.gatling.app.Gatling$.fromMap(Gatling.scala:41)
at common.GatlingRunner$.run(GatlingRunner.scala:16)
at api.rest.DenyListRun$.main(DenyList.scala:107)
at api.rest.DenyListRun.main(DenyList.scala)
Exception in thread “main” java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at io.gatling.app.Runner.run0(Runner.scala:74)
at io.gatling.app.Runner.run(Runner.scala:60)
at io.gatling.app.Gatling$.start(Gatling.scala:73)
at io.gatling.app.Gatling$.fromMap(Gatling.scala:41)
at common.GatlingRunner$.run(GatlingRunner.scala:16)
at api.rest.DenyListRun$.main(DenyList.scala:107)
at api.rest.DenyListRun.main(DenyList.scala)
Caused by: java.lang.NoSuchMethodError: io.gatling.core.Predef$.constantUsersPerSec(D)Lio/gatling/core/controller/inject/open/OpenInjectionSupport$ConstantRateBuilder;
at api.rest.DenyListCustomSimulation.(DenyList.scala:85)
… 11 more
Simulation, runner and http conf:
class DenyListCustomSimulation extends Simulation {
setUp(
DenyList.getRandomDeltaDenyListScn.inject(
nothingFor(5 seconds),
constantUsersPerSec(1 * usersMagnifier.toInt) during (1 * durationMagnifier minutes)
)
).protocols(AutomationProperties.httpConf)
}
object DenyListRun {
def main(args: Array[String]): Unit = GatlingRunner.run(classOf[DenyListCustomSimulation])
}
thanks for the prompt response. I re-built the project and got different exception this time but also java.lang.ClassNotFoundException… do you know what might be wrong? The only change is the version of Gatling in pom file
16:24:40.086 [ERROR] i.g.a.Gatling$ - Run crashed
java.lang.ClassNotFoundException: io.netty.util.internal.ReferenceCountUpdater
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 33 common frames omitted
Wrapped by: java.lang.NoClassDefFoundError: io/netty/util/internal/ReferenceCountUpdater
at io.netty.buffer.Unpooled.wrappedBuffer(Unpooled.java:157)
at io.netty.handler.ssl.PemPrivateKey.valueOf(PemPrivateKey.java:109)
at io.netty.handler.ssl.OpenSsl.(OpenSsl.java:234)
at io.gatling.http.util.SslContextsFactory.(SslContexts.scala:53)
at io.gatling.http.engine.HttpEngine$.apply(HttpEngine.scala:47)
at io.gatling.http.protocol.HttpProtocol$$anon$1.newComponents(HttpProtocol.scala:55)
at io.gatling.core.protocol.ProtocolComponentsRegistry.$anonfun$components$1(Protocol.scala:68)
at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:86)
at io.gatling.core.protocol.ProtocolComponentsRegistry.componentsFactory$1(Protocol.scala:68)
at io.gatling.core.protocol.ProtocolComponentsRegistry.comps$1(Protocol.scala:70)
at io.gatling.core.protocol.ProtocolComponentsRegistry.$anonfun$components$4(Protocol.scala:72)
at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:86)
at io.gatling.core.protocol.ProtocolComponentsRegistry.components(Protocol.scala:72)
at io.gatling.http.action.HttpActionBuilder.lookUpHttpComponents(HttpActionBuilder.scala:26)
at io.gatling.http.action.HttpRequestActionBuilder.build(HttpRequestActionBuilder.scala:33)
at io.gatling.core.structure.BuildAction.$anonfun$build$1(BuildAction.scala:28)
at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
at scala.collection.immutable.List.foldLeft(List.scala:89)
at io.gatling.core.structure.BuildAction.build(BuildAction.scala:27)
at io.gatling.core.structure.BuildAction.build$(BuildAction.scala:26)
at io.gatling.core.structure.ScenarioBuilder.build(StructureBuilder.scala:52)
at io.gatling.core.structure.PopulationBuilder.build(PopulationBuilder.scala:79)
at io.gatling.core.scenario.SimulationParams.$anonfun$scenarios$1(Simulation.scala:192)
at scala.collection.immutable.List.map(List.scala:286)
at io.gatling.core.scenario.SimulationParams.scenarios(Simulation.scala:192)
at io.gatling.app.Runner.run0(Runner.scala:91)
at io.gatling.app.Runner.run(Runner.scala:60)
at io.gatling.app.Gatling$.start(Gatling.scala:73)
at io.gatling.app.Gatling$.fromMap(Gatling.scala:41)
at common.GatlingRunner$.run(GatlingRunner.scala:16)
at api.rest.DenyListRun$.main(DenyList.scala:108)
at api.rest.DenyListRun.main(DenyList.scala)
Exception in thread “main” java.lang.NoClassDefFoundError: io/netty/util/internal/ReferenceCountUpdater
at io.netty.buffer.Unpooled.wrappedBuffer(Unpooled.java:157)
at io.netty.handler.ssl.PemPrivateKey.valueOf(PemPrivateKey.java:109)
at io.netty.handler.ssl.OpenSsl.(OpenSsl.java:234)
at io.gatling.http.util.SslContextsFactory.(SslContexts.scala:53)
at io.gatling.http.engine.HttpEngine$.apply(HttpEngine.scala:47)
at io.gatling.http.protocol.HttpProtocol$$anon$1.newComponents(HttpProtocol.scala:55)
at io.gatling.core.protocol.ProtocolComponentsRegistry.$anonfun$components$1(Protocol.scala:68)
at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:86)
at io.gatling.core.protocol.ProtocolComponentsRegistry.componentsFactory$1(Protocol.scala:68)
at io.gatling.core.protocol.ProtocolComponentsRegistry.comps$1(Protocol.scala:70)
at io.gatling.core.protocol.ProtocolComponentsRegistry.$anonfun$components$4(Protocol.scala:72)
at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:86)
at io.gatling.core.protocol.ProtocolComponentsRegistry.components(Protocol.scala:72)
at io.gatling.http.action.HttpActionBuilder.lookUpHttpComponents(HttpActionBuilder.scala:26)
at io.gatling.http.action.HttpRequestActionBuilder.build(HttpRequestActionBuilder.scala:33)
at io.gatling.core.structure.BuildAction.$anonfun$build$1(BuildAction.scala:28)
at scala.collection.LinearSeqOptimized.foldLeft(LinearSeqOptimized.scala:126)
at scala.collection.LinearSeqOptimized.foldLeft$(LinearSeqOptimized.scala:122)
at scala.collection.immutable.List.foldLeft(List.scala:89)
at io.gatling.core.structure.BuildAction.build(BuildAction.scala:27)
at io.gatling.core.structure.BuildAction.build$(BuildAction.scala:26)
at io.gatling.core.structure.ScenarioBuilder.build(StructureBuilder.scala:52)
at io.gatling.core.structure.PopulationBuilder.build(PopulationBuilder.scala:79)
at io.gatling.core.scenario.SimulationParams.$anonfun$scenarios$1(Simulation.scala:192)
at scala.collection.immutable.List.map(List.scala:286)
at io.gatling.core.scenario.SimulationParams.scenarios(Simulation.scala:192)
at io.gatling.app.Runner.run0(Runner.scala:91)
at io.gatling.app.Runner.run(Runner.scala:60)
at io.gatling.app.Gatling$.start(Gatling.scala:73)
at io.gatling.app.Gatling$.fromMap(Gatling.scala:41)
at common.GatlingRunner$.run(GatlingRunner.scala:16)
at api.rest.DenyListRun$.main(DenyList.scala:108)
at api.rest.DenyListRun.main(DenyList.scala)
Caused by: java.lang.ClassNotFoundException: io.netty.util.internal.ReferenceCountUpdater
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
… 33 more
Looks like you have a mess in your dependencies (missing netty module or mixing different versions or broken maven download that cached an invalid jar in your local repo).
Thank you so much, Stephane. I really didn’t have netty module in my dependencies, somehow it worked without this in 3.1.0 and before… Now I was able to upgrade to 3.3.0 and rest scenarios works perfectly