Не забудьте сначала скомпилировать класс Java - вы не можете загрузить GRASP.java
напрямую.
После компиляции попробуйте следующее:
Needs["JLink`"]
AddToClassPath[NotebookDirectory[]];
LoadJavaClass["GRASP"];
GRASP`TSP[{{1,2,3},{4,5,6}}, 7, 8]
Поскольку метод TSP
является статическим, вы должны загрузить сам класс Java, прежде чем сможете получить к нему доступ. Обратите внимание, что класс становится контекстом Mathematica с именем GRASP
и что статический метод доступен как символ в этом контексте (GRASP`TSP
, как показано выше).
Если бы метод, к которому вы хотели получить доступ, был обычным (не статичным), то вызывающая последовательность будет выглядеть следующим образом:
Needs["JLink`"]
AddToClassPath[NotebookDirectory[]];
obj = JavaNew["GRASP"];
obj@someMethod[{{1,2,3},{4,5,6}}, 7, 8]
Все это предполагает, что ваш класс Java содержится в пакете по умолчанию - необычное обстоятельство. Если бы класс содержался в именованном пакете, синтаксис был бы таким:
Needs["JLink`"]
AddToClassPath[NotebookDirectory[]];
LoadJavaClass["com.stackoverflow.GRASP"];
com`stackoverflow`GRASP`TSP[{{1,2,3},{4,5,6}}, 7, 8]
или
Needs["JLink`"]
AddToClassPath[NotebookDirectory[]];
obj = JavaNew["com.stackoverflow.GRASP"];
obj@someMethod[{{1,2,3},{4,5,6}}, 7, 8]
Если класс равен в именованном пакете (com.stackoverflow
в моих примерах), убедитесь, что класс имеет путь com/stackoverflow/GRASP.class
относительно ноутбука. Это требование Java, а не Mathematica.