4

当我尝试从 matlab 使用 java 时遇到问题。我从 MathWork.com 上通读了几遍教程,还重新安装了 JDK1.6,以便与 matlab 兼容。但是,在我工作之后,它仍然无法正常工作......

这是classpath.txt中的内容:

    C:\Program Files\MATLAB\R2010a\java\jarext\xstream.jar                                  
    C:\Program Files\MATLAB\R2010a\toolbox\javabuilder\jar\win64   \javabuilder.jar            

    DYNAMIC JAVA PATH

C:\Users\Gao\Desktop\connected_components_labeling

显然,该目录包含在文件中。connected_component_labeling 只是我磁盘上的一个文件夹。我想在 connected_components_labeling 中使用的类是:Disjoint_Set.class 和 Node.class 在 connected_components_labeling 文件夹中。

我试过了:

x =  Disjoint_Set();

x = connected_components_labeling.Disjoint_Set();

它们都不起作用。我从 matlab 得到的唯一反馈是:

??? Undefined variable "connected_components_labeling" or class
"connected_components_labeling.Disjoint_Set".

我很沮丧。谁能帮帮我?我会很感激的。万分感谢!

4

1 回答 1

4

确保您使用 MATLAB 兼容的 JRE/JDK 编译 java 文件。据我所知,MATLAB 不适用于 Java 7,所以暂时坚持使用 Java 6...

有几个环境变量会影响 MATLAB。就我而言,我有:

JAVA_HOME = C:\Program Files\Java\jdk1.6.0_32
MATLAB_JAVA = C:\Program Files\Java\jre6
PATH = ...;C:\Program Files\Java\jdk1.6.0_32\bin

这是我刚刚做的一个简单测试:

C:\work\Student.java

public class Student {
    private String name;
    public Student(String str) {
        name = str;
    }
    public void setName(String str) {
        name = str;
    }
    public String getName() {
        return name;
    }

    public static void main(String args[]) {
        Student s = new Student("amro");
        s.setName("unknown");
        System.out.println("Hello " + s.getName());
    }
}

我编译:(javac Student.java输出放在同一目录下c:\work\Student.class)。现在我从 MATLAB 测试它:

javaaddpath('C:\work')

javaMethod('main','Student','')

s = Student('me')
char( s.getName() )

我得到:

Hello unknown

s =
Student@8d6877

ans =
me
于 2012-06-15T18:18:37.110 回答