2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите подружить MATLAB и JAVA
Сообщение16.01.2018, 14:44 
Аватара пользователя
Конечная цель, которую я хочу достигнуть — создать в Матлабе экземпляр одного из классов моего Java-приложения, инициализировать его, вызвать нужный метод с параметрами и получить результат работы. Помогите, пожалуйста, мне этого добиться.

Я прочитал несколько статей с документацией и советами, которые нашлись по этому вопросу в Гугле. Например, вот здесь не плохо всё написано. Следуя этим советам я делаю следующее.

Добавляю путь к папке с Java-программой в список динамический путей матлаба, убеждаюсь, что он добавлен, и пытаюсь создать экземпляр java-переменной:

>> javaaddpath('E:\Documents\Java Progs\Java_Learning\Problem_1363')
>> javaclasspath

STATIC JAVA PATH

C:\Program Files\MATLAB\R2017a\java\patch
C:\Program Files\MATLAB\R2017a\java\jarext\ant.jar

...

C:\Program Files\MATLAB\R2017a\java\jar\zh_CN\web_connectivity_res.jar

DYNAMIC JAVA PATH

E:\Documents\Java Progs\Java_Learning\Problem_1363
>>
>>
>> javavar = FloydSteinbergDithering(100, 100, 127)
Undefined function or variable 'FloydSteinbergDithering'.

>>


И эта ошибка ставит меня в полный тупик.


Содержимое папки "E:\Documents\Java Progs\Java_Learning\Problem_1363" следующее:

E:\Documents\Java Progs\Java_Learning\Problem_1363>dir
Том в устройстве E имеет метку Data
Серийный номер тома: 0829-6867

Содержимое папки E:\Documents\Java Progs\Java_Learning\Problem_1363

16.01.2018 14:41 <DIR> .
16.01.2018 14:41 <DIR> ..
14.01.2018 11:14 226 .classpath
14.01.2018 11:14 388 .project
16.01.2018 14:33 1 325 FloydSteinbergDithering.class
16.01.2018 14:33 1 048 Problem_1363.class
16.01.2018 14:33 3 569 Problem_1363.java
5 файлов 6 556 байт
2 папок 47 097 630 720 байт свободно

E:\Documents\Java Progs\Java_Learning\Problem_1363>


Версия Matlab и Java:

>> ver
----------------------------------------------------------------------------------------------------
MATLAB Version: 9.2.0.538062 (R2017a)
Operating System: Microsoft Windows 7 Максимальная Version 6.1 (Build 7601: Service Pack 1)
Java Version: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
----------------------------------------------------------------------------------------------------


Для написания и помпиляции Java-приложения использую Oracle. Что я делаю не так?

 
 
 
 Re: Помогите подружить MATLAB и JAVA
Сообщение16.01.2018, 15:06 
Какому пакету у вас принадлежит класс FloydSteinbergDithering? Возможно, нужно согласовать имя пакета с фактическим положением класса на файловой системе в вашем каталоге.

 
 
 
 Re: Помогите подружить MATLAB и JAVA
Сообщение16.01.2018, 15:28 
Аватара пользователя
Пакета никакого нет. Только что нашёл в документации "MATLAB - External Interfaces" замечание, что для классов без пакета нужно указывать полный путь к файлу класса. Попробовал:

>> javaaddpath('E:\Documents\Java Progs\Java_Learning\Problem_1363\FloydSteinbergDithering.class')
>> javaclasspath

STATIC JAVA PATH

C:\Program Files\MATLAB\R2017a\java\patch
...

C:\Program Files\MATLAB\R2017a\java\jar\zh_CN\web_connectivity_res.jar

DYNAMIC JAVA PATH

E:\Documents\Java Progs\Java_Learning\Problem_1363\FloydSteinbergDithering.class
E:\Documents\Java Progs\Java_Learning\Problem_1363
>>
>>
>> javavar = FloydSteinbergDithering
Undefined function or variable 'FloydSteinbergDithering'.

>> javavar = FloydSteinbergDithering(100, 100, 127)
Undefined function or variable 'FloydSteinbergDithering'.


Не помогает.

 
 
 
 Re: Помогите подружить MATLAB и JAVA
Сообщение21.01.2018, 11:52 
Аватара пользователя
Неужели на форуме нет ни одного знатока Матлаб???

 
 
 
 Re: Помогите подружить MATLAB и JAVA
Сообщение21.01.2018, 16:44 
Я не знаток MatLab. Поиск в Гугл выдал https://www.mathworks.com/help/matlab/ref/javaaddpath.html?requestedDomain=true, где написано можно добавлять папки и архивы. А вы добавляете класс.
Цитата:
javaaddpath(dpath) adds one or more folders or Java® Archive (JAR) files to the beginning of the current dynamic class path. Use the dynamic path when developing and debugging your own Java classes.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group