2016-05-02 2 views
0

Я пытаюсь вызвать функцию 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) в моем workingspace C:\scriptsMatlab и я добавил этот путь к javaclasspath в Matlab, но когда я пытаюсь вызвать функцию, он говорит мне, что есть нет класса с этим именем в javaclasspath от Matlab.

EDIT: Вот версия Java, которая использует Matlab:

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

И это версия на JDK, который я использовал для компиляции моего класса: enter image description here

Но когда я пытаюсь для выполнения этой команды от matlab

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

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

Undefined function or variable 'TestFunction'. 
+0

Возможно, нужны одинарные кавычки для аргумента. Что произойдет, если вы попытаетесь импортировать MyFunction. * '? – mhopeng

+0

она импортирует его, но он не может распознать класс –

+0

я пытался следовать ответ Macduff здесь http://stackoverflow.com/questions/9520503/calling-java-from-matlab но я застрять в 'methodview testMatlabInterface.TestFunction' говорит, что «Нет класса testMatlabInterface.TestFunction может быть найден или нет методов для класса ' –

ответ

0

Вариант 1

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

    version -java 
    
  2. Compie ваш MyFunction.java с же JDK, как указано выше, и найти ваши MyFunction.class

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

    which classpath.txt 
    
  4. Откройте classpath.txt в качестве administrator.Add полный путь к каталогу с MyFunction.class до конца файла «classpath.txt» в качестве одной строки и сохранить файл.

  5. Restart Matlab.

  6. Для запуска в Matlab. Создайте объект 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.

+0

Я отредактировал свой вопрос после следующих шагов: –

+0

Если вы не вызываете obj = MyFunction. Что такое TestFunction? – Sid

+0

Извините, я только что сменил тестовую функцию с помощью другого –

Смежные вопросы