Google is committed to advancing racial equity for Black communities. See how.

Install TensorFlow for Java

TensorFlow provides a Java API— particularly useful for loading models created with Python and running them within a Java application.

Nightly Libtensorflow Java packages

Libtensorflow JNI packages are built nightly and uploaded to GCS for all supported platforms. They are uploaded to the libtensorflow-nightly GCS bucket and are indexed by operating system and date built.

Supported Platforms

TensorFlow for Java is supported on the following systems:

  • Ubuntu 16.04 or higher; 64-bit, x86
  • macOS 10.12.6 (Sierra) or higher
  • Windows 7 or higher; 64-bit, x86

To install TensorFlow on Android, see Android TensorFlow support and the TensorFlow Android Camera Demo.

TensorFlow with Apache Maven

To use TensorFlow with Apache Maven, add the dependency to the project's pom.xml file:


GPU support

If your system has GPU support, add the following TensorFlow dependencies to the project's pom.xml file:


Example program

This example shows how to build an Apache Maven project with TensorFlow. First, add the TensorFlow dependency to the project's pom.xml file:

    <!-- The sample code requires at least JDK 1.7. -->
    <!-- The maven compiler plugin defaults to a lower version -->

Create the source file (src/main/java/

import org.tensorflow.Graph;
import org.tensorflow.Session;
import org.tensorflow.Tensor;
import org.tensorflow.TensorFlow;

public class HelloTensorFlow {
  public static void main(String[] args) throws Exception {
    try (Graph g = new Graph()) {
      final String value = "Hello from " + TensorFlow.version();

      // Construct the computation graph with a single operation, a constant
      // named "MyConst" with a value "value".
      try (Tensor t = Tensor.create(value.getBytes("UTF-8"))) {
        // The Java API doesn't yet include convenience functions for adding operations.
        g.opBuilder("Const", "MyConst").setAttr("dtype", t.dataType()).setAttr("value", t).build();

      // Execute the "MyConst" operation in a Session.
      try (Session s = new Session(g);
          // Generally, there may be multiple output tensors,
          // all of them must be closed to prevent resource leaks.
          Tensor output = s.runner().fetch("MyConst").run().get(0)) {
        System.out.println(new String(output.bytesValue(), "UTF-8"));

Compile and execute:

mvn -q compile exec:java  # Use -q to hide logging

The command outputs: Hello from version

TensorFlow with the JDK

TensorFlow can be used with the JDK through the Java Native Interface (JNI).


  1. Download the TensorFlow Jar Archive (JAR): libtensorflow.jar
  2. Download and extract the Java Native Interface (JNI) file for your operating system and processor support:
JNI versionURL
Linux CPU only
Linux GPU support
macOS CPU only
Windows CPU only
Windows GPU support


Using the file from the previous example, compile a program that uses TensorFlow. Make sure the libtensorflow.jar is accessible to your classpath:

javac -cp libtensorflow-2.3.0.jar


To execute a TensorFlow Java program, the JVM must access libtensorflow.jar and the extracted JNI library.

Linux / macOS

java -cp libtensorflow-2.3.0.jar:. -Djava.library.path=./jni HelloTensorFlow


java -cp libtensorflow-2.3.0.jar;. -Djava.library.path=jni HelloTensorFlow

The command outputs: Hello from version

Build from source

TensorFlow is open source. Read the instructions to build TensorFlow's Java and native libraries from source code.