0

I'm trying to import a custom Java class into matlab. I found this SO Question that I followed.

I have the following Java code

package mypackage.release; public class TestArgu { public void addNumber(int aNumber){ ansNumber = aNumber+5; chk = aNumber; System.out.println("input number = " + chk + ".\n"); System.out.println("ans = " + ansNumber + ".\n"); } public int ansChk(){ return ansNumber; } private int ansNumber; private int chk; } 

Then I compile with

javac TestArgu.java 

I make sure I add the folder that contains the TestArgu.class with javaaddpath('.') file and try to call it with matlab.

>> a = mypackage.release.TestArgu(); Undefined variable "mypackage" or class "mypackage.release.TestArgu". >> import mypackage.release.*; >> a = TestArgu(); Undefined function or variable 'TestArgu'. >> a = mypackage.release.TestArgu.addNumber(1); Undefined variable "mypackage" or class "mypackage.release.TestArgu.addNumber". 

I'm using the same version of java to compile that matlab uses. (JDK 7, Matlab 2013b)

Where am I going wrong ?

2
  • Try it: > a = mypackage.release.TestArgu.addNumber(1); Commented Jun 3, 2014 at 16:55
  • Same thing, added it into the question. Commented Jun 3, 2014 at 17:07

1 Answer 1

3

I was able to reproduce the same behaviour with the code above. I think one problem is that there is no constructor for this class, so a=TestArgu() will fail. I suggest doing the following. Change the class definition by removing the package my package.release statement and adding a constructor to get

public class TestArgu { public TestArgu() { ansNumber = 0; chk = 0; } public void addNumber(int aNumber){ ansNumber = aNumber+5; chk = aNumber; System.out.println("input number = " + chk + ".\n"); System.out.println("ans = " + ansNumber + ".\n"); } public int ansChk(){ return ansNumber; } private int ansNumber; private int chk; } 

Compile the code, as before

$ javac TestArgu.java 

And then in MATLAB, add the path to wherever this compiled class exists

>> javaaddpath('/Users/geoff/Development/java'); % or wherever 

Then instantiate the object

>> a = TestArgu a = TestArgu@2a307bb2 

And try out the method

>> a.addNumber(37) input number = 37. ans = 42. 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.