Create Java Package Using Java Package Compiler App - MATLAB & Simulink (original) (raw)

Supported platforms: Windows®, Linux®, Mac

This example shows how to use the Java Package Compiler app to package multiple MATLAB® functions into a Java® package. You can call the package in a Java application that computes a magic square.

Before R2025a: Create a Java package using the Library Compiler as shown in Generate Java Package and Build Java Application (R2024b).

Prerequisites

Write Deployable MATLAB Code

In MATLAB, examine the MATLAB code that you want to package. This example uses these files in_`[matlabroot](../../matlab/ref/matlabroot.html)`_\toolbox\javabuilder\Examples\MagicSquareExample.

MATLAB Function MagicSquareExample\MagicDemoComp\makesqr.m
Java Application Code MagicSquareExample\MagicDemoJavaApp\getmagic.java

At the MATLAB command prompt, copy the contents of theMagicSquareExample folder that ships with MATLAB to a new folder named MagicProjectJava.

copyfile(fullfile(matlabroot,"toolbox","javabuilder","Examples","MagicSquareExample"),"MagicProjectJava");

Examine the MATLAB function makesqr.m located in theMagicDemoComp folder.

function y = makesqr(x) y = magic(x);

At the MATLAB command prompt, enter makesqr(5).

The output is a 5-by-5 matrix.

17    24     1     8    15
23     5     7    14    16
 4     6    13    20    22
10    12    19    21     3
11    18    25     2     9

Create Project and Compiler Task

Create a compiler task for your function using the Java Package Compiler. Compiler tasks allow you to compile files in a project for a specific deployment target.

To open the app, on the Apps tab, expand theApps gallery. In theApplication Deployment section, click Java Package Compiler.

Application Deployment section of the Apps gallery.

You can also open the app using the javaPackageCompiler function at the MATLAB Command Window.

After you open the app, the Create Compiler Task dialog box prompts you to add a compiler task to a new or an existing MATLAB project. For this example, select Start a new project and create a compiler task and create a new project named MagicProject in your working folder. For more information on creating and using MATLAB projects, see Create Projects.

Create compiler task dialog box with the text 'To deploy your MATLAB code, you need a MATLAB project to organize code and a compiler task to handle deployment.' The option 'Start a new project and create a compiler task' is selected.

A new compiler task named JavaPackage1 opens in the Editor. You can compile code for other deployment targets by opening the Compiler Task Manager or going to the Manage Tasks tab and creating a new compiler task.

Specify Build Options

You can specify options for the Java package and its installer before packaging to customize the building and packaging process. For instance, you can obfuscate the MATLAB code or specify the method of including MATLAB Runtime in the generated installer.

Add a MATLAB function to the Java package. All files must be located in the project root folder to be added to the project. For this example, in the Exported Functions section of the compiler task, click Add File and selectmakesqr.m. In the Project panel, the file now has the labelsDesign and Exported Function File.

Exported file section of the compiler task with no file selected and button labeled Add Exported Function.

In the Package Info section, replace the string My Java Package with the name for your Java package, magicsquare.

In the Build Settings section, replace the stringClass1 with the name for the Java class, magic.

Build Settings section with class name set to magic.

View Code and Package Java Package

To view code that contains instructions on building and packaging your component, click the arrow next to the Export Build Script button and selectShow Code. On the right, a window displays a deployment script with the compiler.build.javaPackage and compiler.package.installer functions that corresponds to your build options.

You can convert this code to a MATLAB script file by clicking the Export Build Script button. Running the generated build script is equivalent to clicking the Build and Package button.

Two buttons labeled Export Build Script and Build and Package

To create the Java package, click Build and Package.

The compiler generates files in the_`<compilertaskname>`_/output folder in your project folder. The build subfolder contains the Java package, and the package subfolder contains an installer for your package along with MATLAB Runtime. To choose a different output location for the generated files, update the paths in the Output Locations section.

Compile and Run Java Application

After creating the Java package, write source code for a Java application that calls the MATLAB functions in the package.

A Java application for this example named getmagic.java is located in the folder MagicDemoJavaApp. Copy or move this file into the folder that contains your generated package, magicsquare.jar.

getmagic.java

/* Necessary package imports */
import com.mathworks.toolbox.javabuilder.*;
import magicsquare.*;

/*
 * getmagic class computes a magic square of order N. The
 * positive integer N is passed on the command line.
 */
class getmagic
{
   public static void main(String[] args)
   {
      MWNumericArray n = null;   /* Stores input value */
      Object[] result = null;    /* Stores the result */
      magic theMagic = null;     /* Stores magic class instance */

      try
      {
         /* If no input, exit */
         if (args.length == 0)
         {
            System.out.println("Error: must input a positive integer");
            return;
         }

         /* Convert and print input value*/
         n = new MWNumericArray(Double.valueOf(args[0]),MWClassID.DOUBLE);

         System.out.println("Magic square of order " + n.toString());

         /* Create new magic object */
         theMagic = new magic();

         /* Compute magic square and print result */
         result = theMagic.makesqr(1, n);
         System.out.println(result[0]);
      }
      catch (Exception e)
      {
         System.out.println("Exception: " + e.toString());
      }

      finally
      {
         /* Free native resources */
         MWArray.disposeArray(n);
         MWArray.disposeArray(result);
         if (theMagic != null)
            theMagic.dispose();
      }
   }
}

The getmagic application performs these actions.

To test your application in MATLAB before deployment, navigate to the folder that contains both your generated deployable code archive magicsquare.jar and applicationgetmagic.java. Then, run the following commands using the matlabroot, fullfile, and system functions.

compileCommand = ['javac -cp magicsquare.jar;"' ... fullfile(matlabroot,'toolbox','javabuilder','jar', ... 'javabuilder.jar') '" getmagic.java']; runCommand = ['java -cp .;magicsquare.jar;"' ... fullfile(matlabroot,'toolbox','javabuilder','jar', ... 'javabuilder.jar') '" getmagic 5']

system([compileCommand ' && ' runCommand]);

Note

Modify the paths to getmagic.java andmagicsquare.jar in the above commands as needed.

To deploy the Java package, distribute the files magicsquare.jar andgetmagic.java to the end user.

To run a Java package generated by MATLAB Compiler SDK, you must install MATLAB Runtime. For details, see Download and Install MATLAB Runtime. If you created an installer usingBuild and Package, the installer contains a version of MATLAB Runtime that matches the version of MATLAB used to compile the Java package.

To compile and run the Java application outside of MATLAB, open a system command prompt window and navigate to the folder that containsmagicsquare.jar and getmagic.java.

Compile the Java application using javac.

javac -classpath "<matlabroot>\toolbox\javabuilder\jar\javabuilder.jar";magicsquare.jar getmagic.java  
javac -classpath "<matlabroot>/toolbox/javabuilder/jar/javabuilder.jar";magicsquare.jar getmagic.java  

Replace _`<matlabroot>`_ with the path to your MATLAB or MATLAB Runtime installation. For example, on Windows, the path may be C:\Program Files\MATLAB\MATLAB Runtime\R2025a.

From the system command prompt, run the application with the input argument5.

java -classpath .;"matlabroot\toolbox\javabuilder\jar\javabuilder.jar";magicsquare.jar getmagic 5  
java -classpath .:"matlabroot/toolbox/javabuilder/jar/javabuilder.jar":magicsquare.jar getmagic 5  

The application displays a 5-by-5 magic square matrix.

Magic square of order 5 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

To further explore this example:

See Also

Java Package Compiler | compiler.build.javaPackage | compiler.package.installer

Topics