# Windows 11 arm64 architecture (Microsoft Surface Laptop) build failure BoringSSL netty\_tcnative missing

**URL:** <https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721>\
**Category:** Gatling (Open-Source)\
**Created:** [July 16, 2025, 6:29am UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721 "2025-07-16T06:29:06Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![LeslieM](https://dub1.discourse-cdn.com/flex013/user_avatar/community.gatling.io/lesliem/32/1659_2.png) [@LeslieM](https://community.gatling.io/u/LeslieM)\
**Post date:** [July 16, 2025, 6:29am UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721/1 "2025-07-16T06:29:06Z")

</div>

For the Java version of Gatling 3.14.3 on Windows, it works perfectly fine on X64 architecture, but I get an error " java.lang.UnsatisfiedLinkError no netty\_tcnative" on an ARM64 windows machine using the Qualcomm Snapdragon X Elite cpu.

I did some research, and it seems like there might be a way to tell netty to use the JDK SSL library via

> import io.netty.handler.ssl.SslContextBuilder;  
> import io.netty.handler.ssl.SslProvider;  
> SslContextBuilder.forClient().sslProvider(SslProvider.JDK);

Is there a way I can somehow work around this issue – admittedly it is not Gatling’s fault!

JVM:

java -XshowSettings:properties -version

os.arch = aarch64

Log messages:

> Caused by: java.lang.UnsupportedOperationException: BoringSSL is enabled in your configuration, yet it’s not available for your platform windows\_aarch\_64.
> 
> Caused by: java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty\_tcnative\_windows\_aarch\_64, netty\_tcnative\_aarch\_64, netty\_tcnative]
> 
> Caused by: java.io.FileNotFoundException: META-INF/native/netty\_tcnative\_windows\_aarch\_64.dll  
> at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:191)

---

<div class="post-metadata">

**Author:** ![slandelle](https://dub1.discourse-cdn.com/flex013/user_avatar/community.gatling.io/slandelle/32/4_2.png) [@slandelle](https://community.gatling.io/u/slandelle)\
**Post date:** [July 16, 2025, 8:10am UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721/2 "2025-07-16T08:10:54Z")

</div>

Please correct me if I’m wrong, but it’s only a log and not a crash/blocking error. I’m going to lower the logging level from ERROR to WARN in a next release.

You can disable OpenSSL/BoringSSL usage in the `gatling.conf` file.

Note: I don’t expect Netty to provide BoringSSL binaries for Windows ARM any time soon, if ever. You can ask on their project then.

---

<div class="post-metadata">

**Author:** ![slandelle](https://dub1.discourse-cdn.com/flex013/user_avatar/community.gatling.io/slandelle/32/4_2.png) [@slandelle](https://community.gatling.io/u/slandelle)\
**Post date:** [July 16, 2025, 8:13am UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721/3 "2025-07-16T08:13:00Z")

</div>

> <https://github.com/gatling/gatling/commit/1f6e851aefe5c101240338e7cbb1d9fdb9583ba2>
>
> Motivation:
> 
> \* not a blocking error, hence should be using WARN logging level
> \* …can happen on Windows ARM

---

<div class="post-metadata">

**Author:** ![LeslieM](https://dub1.discourse-cdn.com/flex013/user_avatar/community.gatling.io/lesliem/32/1659_2.png) [@LeslieM](https://community.gatling.io/u/LeslieM)\
**Post date:** [July 16, 2025, 1:26pm UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721/4 "2025-07-16T13:26:10Z")

</div>

it logs this as INFO, but subsequently the build fails. Maybe I have a different issue?

I tried setting useOpenSsl = true in gatling.conf, that did not seem to have any effect.

Here is more of the log::

[INFO] \<\<\< gatling:4.19.2:test (default-cli) \< test-compile @ gatling-maven-plugin-demo-java \<\<\<  
[INFO]  
[INFO]  
[INFO] — gatling:4.19.2:test (default-cli) @ gatling-maven-plugin-demo-java —  
[INFO] Running simulation example.BasicSimulation.  
java.lang.reflect.InvocationTargetException  
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)  
at java.base/java.lang.reflect.Method.invoke(Method.java:580)  
at io.gatling.plugin.util.ForkMain.runMain(ForkMain.java:67)  
at io.gatling.plugin.util.ForkMain.main(ForkMain.java:35)  
Caused by: java.lang.UnsupportedOperationException: BoringSSL is enabled in your configuration, yet it’s not available for your platform windows\_aarch\_64.  
at io.gatling.core.config.GatlingConfiguration$.sslConfiguration(GatlingConfiguration.scala:116)  
at io.gatling.core.config.GatlingConfiguration$.mapToGatlingConfig(GatlingConfiguration.scala:228)  
at io.gatling.core.config.GatlingConfiguration$.load(GatlingConfiguration.scala:58)  
at io.gatling.app.Gatling$.start(Gatling.scala:70)  
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)  
at io.gatling.app.Gatling$.main(Gatling.scala:40)  
at io.gatling.app.Gatling.main(Gatling.scala)  
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)  
… 3 more  
Caused by: java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty\_tcnative\_windows\_aarch\_64, netty\_tcnative\_aarch\_64, netty\_tcnative]

…  
[INFO] ------------------------------------------------------------------------  
[INFO] BUILD FAILURE  
[INFO] ------------------------------------------------------------------------  
[INFO] Total time: 2.728 s  
[INFO] Finished at: 2025-07-16T06:22:05-07:00  
[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal io.gatling:gatling-maven-plugin:4.19.2:test (default-cli) on project gatling-maven-plugin-demo-java: Gatling failed.: ForkException → [Help 1]  
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal io.gatling:gatling-maven-plugin:4.19.2:test (default-cli) on project gatling-maven-plugin-demo-java: Gatling failed.  
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)  
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)  
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)  
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)  
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)  
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)  
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)  
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)  
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)  
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)  
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)  
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)  
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)  
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)  
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)  
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)  
at java.lang.reflect.Method.invoke (Method.java:580)  
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)  
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)  
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)  
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)  
Caused by: org.apache.maven.plugin.MojoExecutionException: Gatling failed.  
at io.gatling.mojo.GatlingMojo.execute (GatlingMojo.java:192)  
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)  
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)  
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)  
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)  
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)  
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)  
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)  
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)  
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)  
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)  
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)  
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)  
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)  
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)  
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)  
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)  
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)  
at java.lang.reflect.Method.invoke (Method.java:580)  
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)  
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)  
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)  
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)  
Caused by: io.gatling.plugin.util.Fork$ForkException  
at io.gatling.plugin.util.Fork.run (Fork.java:212)  
at io.gatling.mojo.GatlingMojo.executeGatling (GatlingMojo.java:273)  
at io.gatling.mojo.GatlingMojo.iterateBySimulations (GatlingMojo.java:226)  
at io.gatling.mojo.GatlingMojo.execute (GatlingMojo.java:170)  
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)  
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)  
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)  
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)  
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)  
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)  
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)  
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)  
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)  
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)  
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)  
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)  
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)  
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)  
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)  
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)  
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)  
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)  
at java.lang.reflect.Method.invoke (Method.java:580)  
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255)  
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201)  
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361)  
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314)  
[ERROR]  
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

---

<div class="post-metadata">

**Author:** ![slandelle](https://dub1.discourse-cdn.com/flex013/user_avatar/community.gatling.io/slandelle/32/4_2.png) [@slandelle](https://community.gatling.io/u/slandelle)\
**Post date:** [July 16, 2025, 3:26pm UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721/5 "2025-07-16T15:26:15Z")

</div>

Oh right, the check is implemented in 2 different places, and one of them is blocking.  
cf [Core: fallback to JDK SslProvider when OpenSSL is not available · Issue #4635 · gatling/gatling · GitHub](https://github.com/gatling/gatling/issues/4635)

In the meantime, you’ll have to disable `useOpenSsl` when running on Windows ARM.  
Thanks for reporting.

---

<div class="post-metadata">

**Author:** ![LeslieM](https://dub1.discourse-cdn.com/flex013/user_avatar/community.gatling.io/lesliem/32/1659_2.png) [@LeslieM](https://community.gatling.io/u/LeslieM)\
**Post date:** [July 16, 2025, 3:41pm UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721/6 "2025-07-16T15:41:44Z")

</div>

Thanks SO much!

This worked perfectly in gatling.conf for Windows arm64 !!!

> useOpenSsl = false

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/gatling2/original/2X/b/b148e0742de35c6280726cabf3ecd3de2d320f63.png) [@system](https://community.gatling.io/u/system)\
**Post date:** [August 15, 2025, 3:42pm UTC](https://community.gatling.io/t/windows-11-arm64-architecture-microsoft-surface-laptop-build-failure-boringssl-netty-tcnative-missing/9721/7 "2025-08-15T15:42:20Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
