What is the best practice for referencing a full file path in my deployed application?

17 views (last 30 days)
I am creating a compiled application using MATLAB Compiler, and want to make sure I'm following good pathing practices. I was reading the blog post here, which says that a compiled application behaves more consistently if it uses relative paths (or anchors paths to a known root via matlabroot or ctfroot functions).
In my application, I need to make a connection to a JDBC database. This requires configuring a JDBCConnectionOptions object, which takes in the full file path to the JDBC driver as an input argument, so I need to be able to reference the full file path. I have included the JDBC driver in my compiled application, and know the relative path of the file.
I tried following the instructions in the blog post which suggest using paths relative to the ctfroot; however, in newer (R2018b+) releases of MATLAB you cannot do this in the same way (the directory structure for compiled apps has changed and there is now an additional sub-directory between the ctfroot and the files included with the compiled application).
How can I go about referencing the full path for my JDBC driver in the deployed app?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 8 May 2020

You are correct that the folder structure has changed from R2018b forward.

In general, the best practice to use when referencing files included in the CTF is to use just the filename, as all files that you include with your application are added to your application's path. However, in cases where this is not possible (e.g. you need to specify a full file path as a function argument), you can do the following:

Use the which function to locate your desired JDBC file on the MATLAB path. For instance, if you include the 'mysql-connector-java-8.0.20.jar' file in your compiled application, you can find the full file path in your compiled application by executing:

>> driverPath = which('mysql-connector-java-8.0.20.jar');

You can then pass the resulting driverPath variable as an input to the setConnectionOptions function.

  3 Comments
cr
cr on 17 Dec 2025 at 3:44
MW tech support, at least in this region, do not honour their legal commitments of supporting installation issues with compiler/compiled products on perpetual licences without up to date on maintenance. This is is not even an installation issue, I'm certain it would be waste of time.

Sign in to comment.

More Answers (0)

Categories

Find more on Application Deployment in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!