How to compile functions that are in a package folder (i.e. has the + prefix)?

I have MATLAB code that has been organized into namespaces, +myPackage/myFunction.m. When I try to compile this function to a Java Package with Compiler SDK (2018a) app, I get an error with the following log file:
mcc -W 'java:myNamespace,myClass' -T link:lib -d C:\path_to_project\my_proj\for_testing class{learn:C:\path_to_project\+myPackage\myFunction.m}
Could not determine type of the MATLAB file 'myFunction.m'. Please make sure that you are compiling MATLAB Program files.

 Accepted Answer

Good Morning Jessee,
This is a known limitation our developers are considering for a future release. MATLAB files in packages can be compiled successfully as dependencies, however they cannot be used as exported functions. I apologize for the inconvenience this has caused.
Consider moving the functions you want to compile to another non-package folder. Alternatively, if the "main" file you would like to compile is in the package:
  1. Create a new script outside of any package directories
  2. Call the package function from the new script (>> mypackage.myfile)
  3. Select the new script as the main compilation file.
If you want to access a function through Namespace in deployed Java package, instead of putting MATLAB functions in packages you can leverage "deploytool". It has the capability to generate Java Libraries with a specific namespace.

1 Comment

Creating a wrapper main file that is outside of a package folder worked for me. I liked that solutions best since it didn't require modifying the code that is inside the package.

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2018a

Asked:

on 28 Jun 2018

Commented:

on 2 Jul 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!