Package the java-matter-controller as an excutable format (#23688)

diff --git a/examples/java-matter-controller/Manifest.txt b/examples/java-matter-controller/Manifest.txt
index 6a121a3..8e57ca2 100644
--- a/examples/java-matter-controller/Manifest.txt
+++ b/examples/java-matter-controller/Manifest.txt
@@ -1,2 +1,3 @@
 Main-Class: com.matter.controller.Main
+Class-Path: ../lib/third_party/connectedhomeip/src/controller/java/CHIPController.jar ../lib/third_party/connectedhomeip/src/setup_payload/java/SetupPayloadParser.jar
 
diff --git a/examples/java-matter-controller/README.md b/examples/java-matter-controller/README.md
index 086b37a..cf94be0 100644
--- a/examples/java-matter-controller/README.md
+++ b/examples/java-matter-controller/README.md
@@ -18,41 +18,41 @@
 
 ## Requirements for building
 
-You need Android SDK 21 & NDK 21.4.7075529 downloaded to your machine. Set the
-`$ANDROID_HOME` environment variable to where the SDK is downloaded and the
-`$ANDROID_NDK_HOME` environment variable to point to where the NDK package is
-downloaded.
+You need to have the following two software installed on your Ubuntu system:
 
-1. Install [Android Studio](https://developer.android.com/studio)
-2. Install NDK:
-    1. Tools -> SDK Manager -> SDK Tools Tab
-    2. Click [x] Show Package Details
-    3. Select NDK (Side by Side) -> 21.4.7075529
-    4. Apply
-3. Install Command Line Tools:
-    1. Tools -> SDK Manager -> SDK Tools Tab -> Android SDK Command Line Tools
-       (latest)
-    2. Apply
-4. Install SDK 21:
-    1. Tools -> SDK Manager -> SDK Platforms Tab -> Android 5.0 (Lollipop) SDK
-       Level 21
-    2. Apply
-5. Install Emulator:
-    1. Tools -> Device Manager -> Create device -> Pixel 5 -> Android S API 31
-       -> Download
+1. Java Runtime Environment (JRE)
+2. Java Development Kit (JDK)
+
+```
+java -version
+```
+
+This will ensure either Java Runtime Environment is already installed on your
+system or not. In order to install the Java Runtime Environment on your system,
+run the following command as root:
+
+```
+sudo apt install default-jre Install Java default JRE
+```
+
+After installing the JRE, let us check if we have the Java Development Kit
+installed on our system or not.
+
+```
+javac -version
+```
+
+The above output shows that I need to install the Java compiler or the JDK on my
+system. You can install it through the following command as root:
+
+```
+sudo apt install default-jdk
+```
 
 ### Linux
 
 ```
-export ANDROID_HOME=~/Android/Sdk
-export ANDROID_NDK_HOME=~/Android/Sdk/ndk/21.4.7075529
-```
-
-### MacOS
-
-```
-export ANDROID_HOME=~/Library/Android/sdk
-export ANDROID_NDK_HOME=~/Library/Android/sdk/ndk/21.4.7075529
+export JAVA_PATH=[JDK path]
 ```
 
 <hr>
@@ -79,8 +79,14 @@
 the top Matter directory:
 
 ```shell
-./scripts/build/build_examples.py --target android-x86-java-matter-controller build
+./scripts/build/build_examples.py --target linux-x64-java-matter-controller build
 ```
 
 The Java executable file `java-matter-controller` will be generated at
 `out/android-x86-java-matter-controller/bin/`
+
+Run the java-matter-controller
+
+```
+java -Djava.library.path=../lib/jni -jar java-matter-controller
+```
diff --git a/examples/java-matter-controller/java/src/com/matter/controller/Main.java b/examples/java-matter-controller/java/src/com/matter/controller/Main.java
index 449be3a..11b067a 100644
--- a/examples/java-matter-controller/java/src/com/matter/controller/Main.java
+++ b/examples/java-matter-controller/java/src/com/matter/controller/Main.java
@@ -18,6 +18,8 @@
 
 package com.matter.controller;
 
+import chip.devicecontroller.ChipDeviceController;
+import chip.devicecontroller.ControllerParams;
 import com.matter.controller.commands.common.*;
 import com.matter.controller.commands.discover.*;
 import com.matter.controller.commands.pairing.*;
@@ -82,14 +84,12 @@
   }
 
   public static void main(String[] args) {
-    /* TODO: uncomment when SDK integration is done
     ChipDeviceController controller =
         new ChipDeviceController(
             ControllerParams.newBuilder()
                 .setUdpListenPort(0)
                 .setControllerVendorId(0xFFF1)
                 .build());
-    */
 
     CredentialsIssuer credentialsIssuer = new CredentialsIssuer();
     CommandManager commandManager = new CommandManager();
diff --git a/scripts/build/builders/host.py b/scripts/build/builders/host.py
index 258be0a..07bd62a 100644
--- a/scripts/build/builders/host.py
+++ b/scripts/build/builders/host.py
@@ -363,31 +363,6 @@
         else:
             raise Exception('Unknown host board type: %r' % self)
 
-    def copyToExampleApp(self, jnilibs_dir, libs_dir, libs, jars):
-        self._Execute(
-            ["mkdir", "-p", jnilibs_dir], title="Prepare Native libs " + self.identifier
-        )
-
-        for libName in libs:
-            self._Execute(
-                [
-                    "cp",
-                    os.path.join(
-                        self.output_dir, "lib", "jni", self.board.AbiName(), libName
-                    ),
-                    os.path.join(jnilibs_dir, libName),
-                ]
-            )
-
-        for jarName in jars.keys():
-            self._Execute(
-                [
-                    "cp",
-                    os.path.join(self.output_dir, "lib", jars[jarName]),
-                    os.path.join(libs_dir, jarName),
-                ]
-            )
-
     def createJavaExecutable(self, java_program):
         self._Execute(
             [
@@ -442,32 +417,6 @@
                            '--exclude', os.path.join(self.chip_dir, 'third_party/*'),
                            '--exclude', '/usr/include/*',
                            '--output-file', os.path.join(self.coverage_dir, 'lcov_base.info')], title="Initial coverage baseline")
-            if self.app.exampleName == "java-matter-controller" and 'JAVA_PATH' in os.environ:
-                jnilibs_dir = os.path.join(
-                    self.root,
-                    "examples/",
-                    self.app.ExampleName(),
-                    "app/libs/jniLibs",
-                    self.board.AbiName(),
-                )
-
-                libs_dir = os.path.join(
-                    self.root, "examples/", self.app.ExampleName(), "app/libs"
-                )
-
-                libs = [
-                    "libSetupPayloadParser.so",
-                    "libCHIPController.so",
-                    "libc++_shared.so",
-                ]
-
-                jars = {
-                    "CHIPController.jar": "third_party/connectedhomeip/src/controller/java/CHIPController.jar",
-                    "SetupPayloadParser.jar": "third_party/connectedhomeip/src/setup_payload/java/SetupPayloadParser.jar",
-                }
-
-                self.copyToExampleApp(jnilibs_dir, libs_dir, libs, jars)
-                self.createJavaExecutable("java-matter-controller")
 
     def PostBuildCommand(self):
         if self.app == HostApp.TESTS and self.use_coverage:
@@ -483,6 +432,9 @@
             self._Execute(['genhtml', os.path.join(self.coverage_dir, 'lcov_final.info'), '--output-directory',
                            os.path.join(self.coverage_dir, 'html')], title="HTML coverage")
 
+        if self.app == HostApp.JAVA_MATTER_CONTROLLER:
+            self.createJavaExecutable("java-matter-controller")
+
     def build_outputs(self):
         outputs = {}