Loading

Snowflake JDBC Compatibility Issue with Java 17 in MuleSoft

Publish Date: Sep 3, 2025
Description

When migrating from Java 8 to Java 17, customers may face JDBC driver errors with Snowflake while trying to perform SELECT query in Snowflake.such as:

1. JDBC driver internal error: exception creating result java.lang.NoClassDefFoundError: Could not initialize class net.snowflake.client.jdbc.internal.apache.arrow.memory.RootAllocator at net.snowflake.client.jdbc.SnowflakeResultSetSerializableV1.(SnowflakeResultSetSerializableV1.java:369).

2. JDBC driver internal error: exception creating result java.lang.ExceptionInInitializerError at net.snowflake.client.jdbc.internal.apache.arrow.memory.unsafe.UnsafeAllocationManager.(UnsafeAllocationManager.java:28).

 

This happens because the Snowflake JDBC driver (v3.14.4) is not fully compatible with JDK 16+ when using the default Arrow result format.

Resolution

MuleSoft’s Snowflake Connector works with Java 17 because it sets the connection property JDBC_QUERY_RESULT_FORMAT=JSON internally, avoiding Arrow-based result handling.

If using the Database Connector directly, add the same parameter in the connection URL as a workaround. Change the JDBC Connection URL to have JDBC_QUERY_RESULT_FORMAT=JSON as a connection parameter. 

This is explained in a Snowflake KB here: https://community.snowflake.com/s/article/Getting-java-lang-NoClassDefFoundError-for-class-RootAllocator

This ensures compatibility with Java 17 and avoids the RootAllocator error.

Knowledge Article Number

005152941

 
Loading
Salesforce Help | Article