The query module is ultimately loaded by the ComponentRegistry, which will load its modules via the classloader returned by GlobalConfiguration.classLoader(). However, the logic in IndexingConfigurationBuilder.validate(...) tests that the query module classes are accessible from the classloader that loaded the IndexingConfigurationBuilder itself.
In WildFly, to use querying, one would use the following configuration:
Internally, this configures Infinispan's GlobalConfiguration with the classloader of the "org.infinispan.query" module.
However, the IndexingConfigurationBuilder class is contained in the "org.infinispan" - which does not depend on the "org.infinispan.query" module. Consequently, IndexingConfigurationBuilder validation fails, even though the module would have been successfully loaded at runtime.