# Java: java.lang.foreign.\* is a preview API and is disabled by default. (use --enable-preview to enable preview APIs)

**URL:** <https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442>\
**Category:** Elasticsearch\
**Created:** [March 26, 2025, 9:13pm UTC](https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442 "2025-03-26T21:13:32Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jo\_Vanmont](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jo_vanmont/32/142277_2.png) [@Jo\_Vanmont](https://discuss.elastic.co/u/Jo_Vanmont)\
**Post date:** [March 26, 2025, 9:13pm UTC](https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442/1 "2025-03-26T21:13:32Z")

</div>

I'm trying to compile the elasticsearch-main source code with java version 21 in intellij idea but are getting this error.

 ![elastic-prob](https://us1.discourse-cdn.com/elastic/original/3X/6/3/63bf1931d6c9e23abd026b49fcb259477743369b.jpeg)

Tried already to add --enable-preview to the compiler vm options but no success.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [March 26, 2025, 9:33pm UTC](https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442/2 "2025-03-26T21:33:45Z")

</div>

Welcome!

Could you try with java23?

---

<div class="post-metadata">

**Author:** ![Jo\_Vanmont](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jo_vanmont/32/142277_2.png) [@Jo\_Vanmont](https://discuss.elastic.co/u/Jo_Vanmont)\
**Post date:** [March 26, 2025, 9:56pm UTC](https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442/3 "2025-03-26T21:56:48Z")

</div>

If I want to change the java version, I need to adjust the gradle file. It is now set to version 21.

---

<div class="post-metadata">

**Author:** ![TimV](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/timv/32/13162_2.png) [@TimV](https://discuss.elastic.co/u/TimV)\
**Post date:** [March 27, 2025, 4:20am UTC](https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442/4 "2025-03-27T04:20:02Z")

</div>

> [@Jo\_Vanmont](#):
>
> I'm trying to compile the elasticsearch-main source code with java version 21 in intellij idea

The short answer is _don't_.

Use IntelliJ to write code, but compile Elasticsearch using Gradle, and then run tests using gradle or the gradle runner inside intelliJ,

---

<div class="post-metadata">

**Author:** ![Jo\_Vanmont](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jo_vanmont/32/142277_2.png) [@Jo\_Vanmont](https://discuss.elastic.co/u/Jo_Vanmont)\
**Post date:** [March 27, 2025, 9:49am UTC](https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442/5 "2025-03-27T09:49:51Z")

</div>

Is it possible to configure the build for podman instead of docker?

 ![elastic-podman](https://us1.discourse-cdn.com/elastic/original/3X/9/d/9da3f9e992424df0cd6b0044b455a071d6e70734.jpeg)

---

<div class="post-metadata">

**Author:** ![TimV](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/timv/32/13162_2.png) [@TimV](https://discuss.elastic.co/u/TimV)\
**Post date:** [March 28, 2025, 3:10am UTC](https://discuss.elastic.co/t/java-java-lang-foreign-is-a-preview-api-and-is-disabled-by-default-use-enable-preview-to-enable-preview-apis/376442/6 "2025-03-28T03:10:10Z")

</div>

Maybe.

We need a `docker` command that behaves like the `docker` CLI, but we don't really care whether that's backed by docker or by podman.

You can probably get away with docker compatibility mode in podman.
