Вызов функции Java из сценария Matlab

Я пытаюсь вызвать функцию Java из Matlab Сценарий, я перепробовал все решения, размещенные на сайте, но у меня не возникло проблем. Мой класс прост:

  package testMatlabInterface;

public class TestFunction
{
  private double value;

  public TestFunction()
  {
      value=0;
  }

  public double Add(double v)
  {
      value += v;
      return value;
  }

  public static void main(String args[])
  {

  }
}

Итак, я положил .java файл (также .class) в моем рабочем пространстве C:\scriptsMatlab и я добавил этот путь к javaclasspath Matlab, но когда я пытаюсь вызвать функцию, он говорит мне, что нет класса с этим именем в javaclasspath из Matlab,

РЕДАКТИРОВАТЬ: Вот версия Java, которую использует Matlab:

Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode

И это версия на JDK, которую я использовал для компиляции моего класса:

Но когда я пытаюсь выполнить этот командир из Matlab

>> javaaddpath 'C:\scriptsMatlab'
>> obj = TestFunction

это говорит мне:

Undefined function or variable 'TestFunction'.

1 ответ

Решение

Опция 1

  1. Проверьте, используется ли тот же JRE/JDK для компиляции вашего файла JAVA. Выполнить на Matlab:

    version -java
    
  2. Скомпилируйте MyFunction.java с тем же jdk, что и выше, и найдите MyFunction.class.

  3. Найдите свой Matlab classpath.txt. Введите следующий в Matlab cmd.

    which classpath.txt
    
  4. Откройте ваш classpath.txt как администратор. Добавьте полный путь к каталогу с MyFunction.class в конец файла "classpath.txt" в одну строку и сохраните файл.

  5. Перезапустите Matlab.

  6. Бежать в Матлаб. Создать объект MyFunction.

    obj = MyFunction
    

    Запустить метод main() в matlab.

    javaMethod('main', obj, '')
    

Вариант 2

Выполните шаги 1-2.

Выполните следующую команду в Matlab

JAVAADDPATH PATH/to/Directoryof MyFunction.class,

Нет необходимости перезапускать Matlab здесь. Просто беги, используя

obj = MyFunction;
javaMethod('main', obj);

Из MathWorks:

javaMethod (MethodName, JavaObj, x1,..., xN) вызывает метод в классе массива объектов Java® с сигнатурой, соответствующей аргументам x1,..., xN.

javaMethod (StaticMethodName, ClassName, x1,..., xN) вызывает статический метод в классе ClassName.

Другие вопросы по тегам